C# 如何在ASP.NET MVC中有条件地显示字段?
我对C#和ASP.NET MVC Razor非常陌生。如果字段不是空的,我想在视图中显示该字段 代码 如何使用ASP.NET MVC Razor做到这一点?C# 如何在ASP.NET MVC中有条件地显示字段?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我对C#和ASP.NET MVC Razor非常陌生。如果字段不是空的,我想在视图中显示该字段 代码 如何使用ASP.NET MVC Razor做到这一点?@if(string.IsNullOrEmpty(Model.phone2)) @if (string.IsNullOrEmpty(Model.phone2)) { <tr class="hide" id="trPhone2"> } else { <tr id="trPhone2"> } { } 其他
@if(string.IsNullOrEmpty(Model.phone2))
@if (string.IsNullOrEmpty(Model.phone2))
{
<tr class="hide" id="trPhone2">
}
else
{
<tr id="trPhone2">
}
{
}
其他的
{
}
语法可能不完美,但请尝试以下方法:
@{
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>
@{
var trClass=string.IsNullOrEmpty(Model.phone2)?“隐藏”:“”;
}
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)
只需将此字段包装在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==“”)
{
}
其他的
{
}
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)
或者,您可以像这样跳过整个场的渲染
@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>
}
@if(Model.phone2!=“”)
{
@LabelFor(model=>model.phone2)
@EditorFor(model=>model.phone2)
@Html.ValidationMessageFor(model=>model.phone2)
}
这是一种更好的方法,因为它完全从dom对象中删除字段,从而消除了以后被编辑的可能性 我将计算代码块中的类名并输出该名称。大致如下:
@{
var phone2ClassName = string.IsNullOrWhiteSpace(Model.phone2) ? "hide" : string.Empty;
}
<tr class="@phone2ClassName" id="trPhone2">
...
@{
var phone2ClassName=string.IsNullOrWhiteSpace(Model.phone2)?“hide”:string.Empty;
}
...
如果是非常复杂的逻辑,则使用如下方式:
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" >
var trId=”“;
if(Model[i].FeeType==(int)FeeTypeEnum.LateFee
||模型[i]。FeeType==(int)FeeTypeEnum.dfee)
{
trId=String.Format(“{0}{1}”,@Model[i].ProductId,@Model[i].FeeType);
}
其他的
{
trId=@Model[i].ProductId.ToString();
}
这看起来很简单,但它在我的代码中抛出了错误。我想因为我把c#in和html混合在一起了。@dmikester1,给我们看看你的代码,我相信这个错误可以很容易地解决。我最后使用了另一个答案。Thanks我将您的代码粘贴在我的其他HTML之间,它说有两个带有trPhone2的id,有两个打开的
标记,而我们的代码的第一行插入了另一个标记-似乎这就是问题所在。无论如何,很高兴知道你已经找到了一个解决办法。它像一个魅力!你也可以像@Html.ActionLink(“,”action“,”controller“,”new{id=id},new{@class=“btn-btn-default-btn\u-details”+@trClass})那样做
@{
var phone2ClassName = string.IsNullOrWhiteSpace(Model.phone2) ? "hide" : string.Empty;
}
<tr class="@phone2ClassName" id="trPhone2">
...
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" >