假设我有我的观点,并someModel
以list<someObjects>
.
如果我有一个 div 并且只想在列表的计数大于 0 时显示它,那么 if 语句是在我的剃须刀中显示它的“行业标准”方式吗?
假设我有我的观点,并someModel
以list<someObjects>
.
如果我有一个 div 并且只想在列表的计数大于 0 时显示它,那么 if 语句是在我的剃须刀中显示它的“行业标准”方式吗?
在渲染 DOM 时使用 razorif
语句来控制它并没有错。虽然,您可能希望确保您的列表已实例化,否则您将收到异常“对象引用未设置为对象的实例”。
@if( Model.someList != null && Model.someList.Count > 0 )
{
<div>@someList.Count</div>
}
在视图中使用简单的逻辑(如if
语句和循环)很好,而且是很常见的事情。
如果您发现自己使用了任何其他逻辑,或者发现if
语句和循环嵌套了好几层,这可能表明您的视图正在做很多事情,您应该考虑将其中的一些逻辑移动到您的控制器中。
归根结底,在哪里划定界限是个人的事情,没有“行业标准”。
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.
不,没有“标准”的方式来处理这个问题。当然,您可以使用 if 语句。但是,只要列表为空,foreach(如果您打算遍历内容)就可以正常工作(但如果它为空则不行)。
更好的方法是使用 Editor/DisplayTemplate 来呈现集合,如果集合为空或为空,它将自动处理集合。
如果集合可以为空,则另一种方法是使用带有空合并运算符的 foreach 以在这种情况下创建一个空列表。
您必须考虑各种选项,以决定哪一个最适合您的情况。