如果我剃刀中的声明是最好的方法吗?

时间:2013-06-17 22:21:04

标签: asp.net-mvc-4 razor

说我有我的观点并且正在传递someModel,其属性为list<someObjects>

如果我有一个div并且只想在列表的计数大于0时显示它,if语句是否是在我的剃刀中显示这个的“行业标准”方式?

4 个答案:

答案 0 :(得分:1)

使用razor if语句控制DOM的呈现方式没有任何问题。虽然,您可能希望确保实例化列表,但是您将获得异常“对象引用未设置为对象的实例。”

@if( Model.someList != null && Model.someList.Count > 0 )
{
 <div>@someList.Count</div>
}

答案 1 :(得分:1)

在视图中使用像if语句和循环这样的简单逻辑很好,而且很常见。

如果您发现自己使用任何其他逻辑,或者发现if语句和循环嵌套在几个级别深处,这可能表明您的视图正在做很多事情,您应该考虑移动一些这个逻辑对你的控制器。

如果当天结束,决定在哪里划线是个人的事情,并且没有“行业标准”。

答案 2 :(得分:1)

您可以在剃刀视图中写if条件,因为

 The Razor syntax is a template markup syntax, based on the C# programming 
 language,that enables the programmer to use an HTML construction workflow. 
 Instead of using the ASP.NET .ASPX markup syntax with <%= %>/@ symbols to 
 indicate code blocks, Razor syntax starts code blocks with a @ character
 and does not require explicit closing of the code-block.

答案 3 :(得分:0)

不,没有“标准”处理方式。当然,您可以使用if语句。但是,foreach(如果您计划迭代内容)只要列表为空(但如果它为null)则工作正常。

更好的方法是使用Editor / DisplayTemplate来渲染集合,如果集合为null或为空,它将自动处理集合。

另一种方法是使用带有空合并运算符的foreach,如果集合可以为null,则在这种情况下创建一个空列表。

您必须考虑各种选项,以便决定哪种方案最适合您的情况。