Asp.net mvc 3 MVC3 Razor@if中是否存在错误
我有几个表单字段可能需要显示,也可能不需要显示,这取决于加载表单的实体。所以在我的模型中,我有相应的布尔属性 表单中的每个字段都有相应的“标签”(不是html标签)。下面的代码隐藏html输入元素,但不隐藏标签Asp.net mvc 3 MVC3 Razor@if中是否存在错误,asp.net-mvc-3,syntax,razor,Asp.net Mvc 3,Syntax,Razor,我有几个表单字段可能需要显示,也可能不需要显示,这取决于加载表单的实体。所以在我的模型中,我有相应的布尔属性 表单中的每个字段都有相应的“标签”(不是html标签)。下面的代码隐藏html输入元素,但不隐藏标签 <!-- DBA: _________________ --> <tr> <td> @if (Model.DisplayDBAField) { @Html.Raw("DBA:")
<!-- DBA: _________________ -->
<tr>
<td>
@if (Model.DisplayDBAField)
{
@Html.Raw("DBA:")
}
</td>
<td>
@Html.TextBox("DoingBusinessAs", Model.DoingBusinessAs, new { style = string.Format("visibility: {0};", Model.DisplayDBAField ? "visible" : "hidden") })
</td>
</tr>
上面的代码工作正常,我一步一步地检查了它,字段设置/取消设置正确。
这是模型:
public class ProfileModel
{
public EntityProfile Entity { get; set; }
public bool DisplayDBAField { get; set; }
public bool DisplayVendorIDField { get; set; }
public bool DisplayContactNameFields { get; set; }
public bool DisplayDistributionMethodField { get; set; }
public bool DisplayCardPurposeField { get; set; }
public ProfileModel()
{
DisplayDBAField = true;
DisplayVendorIDField = true;
DisplayContactNameFields = true;
DisplayDistributionMethodField = true;
DisplayCardPurposeField = true;
}
}
因此,默认构造函数将标志设置为true,控制器在适当时修改标志。我还尝试了以下视图:
<td>
@if (!Model.DisplayDBAField)
{
@Html.Raw("DBA:")
}
</td>
@如果(!Model.DisplayDBAField)
{
@Html.Raw(“DBA:”)
}
并发现无论Model.DisplayDBAField中的值是多少,无论它是真是假,“DBA:”都不会被渲染!因此,无论我使用@if(Model.displaybafield){}还是@if(!Model.displaybafield){},代码本身似乎在运行时被完全忽略。如果您编写
@Model.displaybafield
,您会看到什么?您能否从控制器发布代码,特别是写入displaybafield
的部分,只是一个注释。将@if
放在
周围,这样您只需要检查一次,这不是更合乎逻辑吗?您是否在模型.displaydbField
属性上放置了一个断点,并查看它包含的内容?PaulRivera-将光标放在razor代码上,然后点击F9。代码中必须有一个实际的游标。
public class ProfileModel
{
public EntityProfile Entity { get; set; }
public bool DisplayDBAField { get; set; }
public bool DisplayVendorIDField { get; set; }
public bool DisplayContactNameFields { get; set; }
public bool DisplayDistributionMethodField { get; set; }
public bool DisplayCardPurposeField { get; set; }
public ProfileModel()
{
DisplayDBAField = true;
DisplayVendorIDField = true;
DisplayContactNameFields = true;
DisplayDistributionMethodField = true;
DisplayCardPurposeField = true;
}
}
<td>
@if (!Model.DisplayDBAField)
{
@Html.Raw("DBA:")
}
</td>