CodeGo.net>如何在Razor视图中测试lambda表达式?

您能否指导我如何在Razor视图引擎中设置断点来测试我的lambda表达式?

例如,我有以下代码:

@(Html.DropDownList("Condition4", 
                    new SelectList(Model
                                   .Conditions
                                   .Where(c => 
                                          c.TxCondition.TxConditionTypeId == Model.ConditionTypes.Single
                                          ct => ct.TxConditionType.ConditionTypeCode == "Region")
                                    .TxConditionType
                                    .TxConditionTypeId), 
                    "TxCondition.TxConditionId", 
                    "ConditionTitle",
                    Model.SearchCondition.Condition4), 
    "All"))

在断点上,我尝试使用“快速监视Windows”测试以下代码,但错误是“表达式不能包含lambda表达式”

您能否指导我如何在MVC Razor视图中测试Lambda表达式?

非常感谢您的时间和帮助.

Model.Conditions.Where(c => c.TxCondition.TxConditionTypeId == 1)

解决方法:

调试和Lambda总是很难处理.

一个用户问了一个问题:Visual Studio debugging “quick watch” tool and lambda expressions,并解释说匿名函数实际上非常复杂,需要在编译器方面进行大量工作.因此,您不能真正将它们放入快速手表或类似产品中.

我无法真正解决您的问题,但我想提出一种稍微不同的方法.

在MVC中,视图应该是愚蠢的.他们真的应该是“做事”.我的意思是,他们不应该真正关心创建变量,执行逻辑,选择或实例化对象等等.相反,应该只接受赋予它的对象并尝试显示它们.

这迫使您将所有这些内容放在代码库中的其他位置.正确使用良好的体系结构,分层和关注点分离将有助于您组织事物,包括业务逻辑.此外,我建议,当使用Lambda编写逻辑并且如果Lambda有点复杂时,请将组件分成多个部分,以便于调试和逐步调试.

ICollection<object> filter1 = someCollection.Where(x => x.IsAvailable);
object myObject = filter1.SingleOrDefault(x => x.SomeString = "aValue").Distinct();
上一篇:C#-页面选项卡加载太慢-umbraco 6


下一篇:C#-MVC 4 @ Html.DropDownListFor()未将模型值传递给下拉列表