与 @if @else 相比,有没有更好的方法只是为了改变用Razor视图构建的cshtml页面中的html元素的少数属性(如禁用,值,类等)?
答案 0 :(得分:2)
您也可以使用内联条件语句:
<input type="text" value="@(true == true ? "one value" : "another value")" />
答案 1 :(得分:0)
我不知道为什么你认为剃刀@if
存在任何性能缺陷,但你可以使用ViewModel
或ViewBag
:
<input type="text" value="@(ViewBag.TheValue)" />
但是为了最佳实践,请不要将服务器端逻辑与演示文稿混合使用。 “分开关注”
更新(我的意思是“分开关注”):
这意味着View应该尽可能多地包含HTML标记和HTML帮助程序(它们只能帮助您编写标记)。不要在视图中放置逻辑。如果它让您将代码置于其中,请不要重复使用相同的视图。
答案 2 :(得分:0)
您可以在ViewModel中将它们作为true / false值或字符串值传递。 例如 -
等
这样可以清理所有@if else语句的剃刀视图
答案 3 :(得分:0)
MVC 4 / Razor V2将有一些改进:
条件属性渲染
如果你的属性可能为null,那么在过去你需要进行空检查以避免写出空属性,如下所示:
<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>
现在Razor能够自动处理,所以你可以写出属性。如果为null,则不写入该属性:
<div class="@myClass">Content</div>
因此,如果@myClass
为null
,则输出就是:
<div>Content</div>