如何改写MVC中基于IsRequired条件渲染span标签的代码?
几种替代写法推荐
1. 内联条件表达式(最简洁)
把多行if改成Razor内联三元表达式,代码更紧凑:
<label for="pollingResponses[{0}].Value"> @Html.Raw(item.labelControl) @(item.IsRequired ? "<span class='required'></span>" : "") </label>
2. Razor隐式条件渲染(优化原写法)
利用Razor语法特性简化代码,同时修正原代码里标签格式的小问题:
<label for="pollingResponses[{0}].Value"> @Html.Raw(item.labelControl) @if (item.IsRequired) { <span class="required"></span> } </label>
注:原代码里for=pollingResponses[{0}].Value)多了一个右括号,建议修正为带引号的规范写法for="pollingResponses[{0}].Value"
3. TagBuilder构建标签(适合复杂场景)
如果需要动态设置更多标签属性,可以用TagBuilder来构建元素:
@{ var requiredSpan = new TagBuilder("span"); requiredSpan.AddCssClass("required"); } <label for="pollingResponses[{0}].Value"> @Html.Raw(item.labelControl) @if (item.IsRequired) { @Html.Raw(requiredSpan.ToString()) } </label>
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

