我的公司有兴趣将大型业务应用程序移植到.NET.我们计划开发桌面版和Silverlight版.我主要研究了CSLA框架(得到了岩石的书,已经过了一半)并发现它有点过度设计,数据层方面似乎也没那么精致.
是否还有其他框架声称要做CSLA正在做的事情?我不是在谈论ORM工具(例如L2S,EF,NHibernate.)我对支持业务规则的框架感兴趣,简单的n层架构,对象是域驱动的而不是数据库驱动的,业务对象的安全性等...
我知道我可以找到一些小框架来完成所需的一些工作(想到企业应用程序块),但我正在寻找一个包含所有内容的框架.
我正在运行string.Format一个包含一些HTML + javascript的readonly字符串,但我得到了一个System.FormatException.
这是我的格式字符串:
<script type="text/javascript">
function {0}_showHideFieldWindow() {
if ({0}.IsCustomizationWindowVisible()) {
{0}.HideCustomizationWindow();
} else {
{0}.ShowCustomizationWindow();
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我正在做的就是传递对象名称.像这样:
string.Format(javascript, "grid");
Run Code Online (Sandbox Code Playgroud) 我需要枚举一组控件 - 无论它们的嵌套级别如何 - 与给定的谓词匹配.
最初出现问题,当我需要将网格行中的所有文本框设置为ReadOnly,如果该行中的列指示该记录不应该是可编辑的.
后来我意识到,我已经解决了过去非常像这个问题,只有不同的标准(通过其ID递归找到一个控件).
在尝试了一些替代方案之后,我想出了一个有效的通用解决方案.但由于我会经常使用这种方法,我想收集可能的改进.
此方法将返回与谓词匹配的所有子控件:
public static IEnumerable<T> FindChildControls<T>(this Control parentControl,
Predicate<Control> predicate) where T : Control
{
foreach (Control item in parentControl.Controls) {
if (predicate(item))
yield return (T)item;
foreach (T child in item.FindChildControls<T>(predicate)) {
yield return child;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此方法,我可以执行以下操作:
var allTxt = Page.FindChildControls<TextBox>(c => c is TextBox);
var submit = Page.FindChildControls<Button>(c => c.ID == "btnSubmit").First();
Run Code Online (Sandbox Code Playgroud)