我是C#和ASP.NET MVC Razor的新手。如果字段不为空,我想在视图中显示一个字段。
<tr class="hide" id="trPhone2">
<td class="editor-label">
@Html.LabelFor(model => model.phone2)
</td>
<td>
@Html.EditorFor(model => model.phone2)
</td>
<td>
@Html.ValidationMessageFor(model => model.phone2)
</td>
</tr>
现在,如果<tr>
和其他输出,我想输出第一个model.phone2 is ""
行:
<tr id="trPhone2">
如何使用ASP.NET MVC Razor执行此操作?
答案 0 :(得分:9)
语法可能不完美,但试试这个:
@{
var trClass = string.IsNullOrEmpty(Model.phone2) ? "hide" : "";
}
<tr class="@trClass" id="trPhone2">
<td class="editor-label">
@Html.LabelFor(model => model.phone2)
</td>
<td>
@Html.EditorFor(model => model.phone2)
</td>
<td>
@Html.ValidationMessageFor(model => model.phone2)
</td>
</tr>
答案 1 :(得分:4)
@if (string.IsNullOrEmpty(Model.phone2))
{
<tr class="hide" id="trPhone2">
}
else
{
<tr id="trPhone2">
}
答案 2 :(得分:2)
只需在if条件
中包装此字段即可@if (Model.phone2=="")
{
<tr class="hide" id="trPhone2">
}
else
{
<tr id="trPhone2">
}
<td class="editor-label">
@Html.LabelFor(model => model.phone2)
</td>
<td>
@Html.EditorFor(model => model.phone2)
</td>
<td>
@Html.ValidationMessageFor(model => model.phone2)
</td>
</tr>
或者,你可以简单地跳过像这样的整个字段渲染
@if (Model.phone2!="")
{
<tr id="trPhone2">
<td class="editor-label">
@Html.LabelFor(model => model.phone2)
</td>
<td>
@Html.EditorFor(model => model.phone2)
</td>
<td>
@Html.ValidationMessageFor(model => model.phone2)
</td>
</tr>
}
这是一种更好的方法,因为它完全从dom对象中删除了字段,因此删除了以后编辑的任何可能性。
答案 3 :(得分:1)
我会在代码块中计算类名并输出。有点像:
@{
var phone2ClassName = string.IsNullOrWhiteSpace(Model.phone2) ? "hide" : string.Empty;
}
<tr class="@phone2ClassName" id="trPhone2">
...
答案 4 :(得分:0)
如果它是非常复杂的逻辑,那么使用如下:
var trId = "";
if(Model[i].FeeType == (int)FeeTypeEnum.LateFee
|| Model[i].FeeType == (int)FeeTypeEnum.WaivedFee)
{
trId=String.Format("{0}_{1}", @Model[i].ProductId, @Model[i].FeeType);
}
else
{
trId = @Model[i].ProductId.ToString();
}
<tr id="@trId" >