我想根据视图页面中的一些bool值设置属性,如:
@{
object displayMode = (Model.PostCodeEnabled) ? null : new { disabled = "disabled", style = "width:200px;" };
@Html.TextBox("PostalCode", "", displayMode)
}
上面的代码工作正常,但是如果我想在这两种情况下都将宽度应用为200px,那么下面的代码就不起作用了:
@{
object displayMode = (Model.PostCodeEnabled) ? new { style = "width:200px;" }: new { disabled = "disabled", style = "width:200px;" };
@Html.TextBox("PostalCode", "", displayMode)
}
另外,我有点困惑何时在属性之前附加@符号,这是新{disabled =“disabled”}&之间的差异。新{@disabled =“禁用”}。
答案 0 :(得分:0)
问题不在于@标志 - 你的问题是你不能在两个匿名类型之间进行隐式类型转换。
这意味着,您需要制作一个“正确的”if语句,如下所示:
@{
object displayMode = new { @disabled = "disabled", @style = "width:200px;" };
if (Model.PostCodeEnabled)
{
displayMode = new { @style = "width:200px;" };
}
@Html.TextBox("PostalCode", "", displayMode)
}
回到@标志 - 在创建用作HTML属性的匿名类型时,您总是需要包含它。