Tag: mvccontrib

反映参数名称:滥用C#lambdaexpression式或语法辉煌?

我正在研究MvcContrib Grid组件,我着迷于它,但同时又被网格语法中使用的语法技巧击退了: .Attributes(style => "width:100%") 上面的语法将生成的HTML的样式属性设置为width:100% 。 现在,如果你注意,'风格'是无处指定的,从expression式中参数的名称推导! 我不得不深究这一点,发现“魔法”发生的地方: Hash(params Func<object, TValue>[] hash) { foreach (var func in hash) { Add(func.Method.GetParameters()[0].Name, func(null)); } } 所以确实,代码使用forms,编译时间,参数名称来创build属性名称 – 值对的字典。 由此产生的语法结构的确非常具有performance力,但同时又非常危险。 一般使用lambdaexpression式可以replace所使用的名称而不会产生副作用。 我在书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以写在我的代码collection.ForEach(log => Fire.Burn(log)) , 它意味着相同东西 。 但是,在这里使用MvcContrib Grid语法突然间,我发现代码可以根据我为我的variablesselect的名称进行主动查找并进行分解。 那么C#3.5 / 4.0社区和lambdaexpression式爱好者的这种常见做法是什么? 或者是一个stream氓特技,我不应该担心?

ASP.NET MVC部分视图:input名称前缀

假设我有ViewModel public class AnotherViewModel { public string Name { get; set; } } public class MyViewModel { public string Name { get; set; } public AnotherViewModel Child { get; set; } public AnotherViewModel Child2 { get; set; } } 在我看来,我可以渲染一个部分 <% Html.RenderPartial("AnotherViewModelControl", Model.Child) %> 在部分我会做的 <%= Html.TextBox("Name", Model.Name) %> or <%= Html.TextBoxFor(x => x.Name) %> […]