在ASP.Net MVC3中设置属性

时间:2011-07-12 08:15:52

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我想根据视图页面中的一些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 =“禁用”}。

1 个答案:

答案 0 :(得分:0)

问题不在于@标志 - 你的问题是你不能在两个匿名类型之间进行隐式类型转换。

这意味着,您需要制作一个“正确的”if语句,如下所示:

@{
    object displayMode = new { @disabled = "disabled", @style = "width:200px;" };

    if (Model.PostCodeEnabled)
    {
        displayMode = new { @style = "width:200px;" };
    }

    @Html.TextBox("PostalCode", "", displayMode)
}

回到@标志 - 在创建用作HTML属性的匿名类型时,您总是需要包含它。