Jaa*_*aap 4 asp.net-mvc-4 razor-2
在标签中我想要有条件地输出样式属性,例如:<li style="@styleVar" >...</li>
当styleVar为null时,它不应该由razor编写(只是Razor 2中假设的标准功能),但出于某些奇怪的原因,它输出为<li style="">...</li>,而我期望<li>...</li>.
这是部分视图.在正常视图中,它正在工作.这是部分视图中的错误吗?
有人有同样的经历吗?
这似乎不适用于部分视图和自定义html属性,例如data-test ="@ test".这不会被省略,而是仍然放入data-test ="".所以MVC团队必须尽快解决这个问题.
如果styleVar等于null(不是string.Empty)mvc4会自动执行此操作.
条件属性渲染
如果您的属性可能为null,那么在过去您需要进行空检查以避免写出空属性,如下所示:
<div @{if (myClass != null) { <text>class="@myClass"</text> } }>Content</div>
Run Code Online (Sandbox Code Playgroud)
现在Razor能够自动处理,所以你可以写出属性.如果为null,则不写入该属性:
<div class="@myClass">Content</div>
Run Code Online (Sandbox Code Playgroud)
因此,如果@myClass为null,则输出就是:
<div>Content</div>
Run Code Online (Sandbox Code Playgroud)
在您的代码中看不到任何错误:您“硬编码”标记并且仅改变样式值。为了实现您想要做的事情,您需要类似于以下的代码:
@if(!string.IsNullOrEmpty(styleVar))
{
<li style="@styleVar" >...</li>
}
Run Code Online (Sandbox Code Playgroud)