MVC3 Razor View优化

时间:2012-03-14 21:40:44

标签: asp.net-mvc-3 razor

@if @else 相比,有没有更好的方法只是为了改变用Razor视图构建的cshtml页面中的html元素的少数属性(如禁用,值,类等)?

4 个答案:

答案 0 :(得分:2)

您也可以使用内联条件语句:

<input type="text" value="@(true == true ? "one value" : "another value")" />

答案 1 :(得分:0)

我不知道为什么你认为剃刀@if存在任何性能缺陷,但你可以使用ViewModelViewBag

<input type="text" value="@(ViewBag.TheValue)" />

但是为了最佳实践,请不要将服务器端逻辑与演示文稿混合使用。 “分开关注”


更新(我的意思是“分开关注”):

这意味着View应该尽可能多地包含HTML标记和HTML帮助程序(它们只能帮助您编写标记)。不要在视图中放置逻辑。如果它让您将代码置于其中,请不要重复使用相同的视图。

答案 2 :(得分:0)

您可以在ViewModel中将它们作为true / false值或字符串值传递。 例如 -

  • 需要动态设置为启用或禁用的任何内容 - 您可以创建一个bool
  • 任何在运行时设置的字符串的html类都可以作为视图模型中的字符串变量传递。

这样可以清理所有@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> 

因此,如果@myClassnull,则输出就是:

<div>Content</div>

来自Jon Galloway's blog