asp.net mvc razor变量设置不正确

时间:2015-01-09 10:09:20

标签: c# asp.net-mvc razor

我正在开发一个页面,我希望根据条件将类添加到控件中。我尝试了下面的代码但是当我在cshtml文件中添加动态类名时,它以错误的方式呈现。有什么建议吗?

   object TitleClass = (Model.Id != 0 && Model.IsApproved) ?
        (object)new { @disabled = "disabled", @class = "headerBox" } : new{ @class = "headerBox"};

    <div>
        @Html.TextBoxFor(model => model.Title, new { @placeholder = "New Title", TitleClass })
        @Html.ValidationMessageFor(model => model.Title)
    </div>

呈现为

<input name="Title" id="Title" type="text" placeholder="New Demand Title" value="cpx appr with orders" data-val-required="Enter Demand Title" data-val="true" titleclass="{ disabled = disabled, class = headerBox }">

尝试将其渲染为

<input name="Title" id="Title" type="text" placeholder="New Demand Title" value="cpx appr with orders" data-val-required="Enter Demand Title" data-val="true" disabled = disabled class = headerBox >

2 个答案:

答案 0 :(得分:1)

尝试:

object attributes = (Model.Id != 0 && Model.IsApproved) ?
        (object)new { @placeholder = "New Title", @disabled = "disabled", @class = "headerBox" } : new{ @placeholder = "New Title", @class = "headerBox"};

    <div>
        @Html.TextBoxFor(model => model.Title, attributes)
        @Html.ValidationMessageFor(model => model.Title)
    </div>

答案 1 :(得分:1)

您需要将placeholder属性添加到TitleClass,以避免创建两组新的匿名对象

object TitleClass = (Model.Id != 0 && Model.IsApproved) ?
    (object)new { @placeholder = "New Title", @disabled = "disabled", @class = "headerBox" } : (object)new{ @placeholder = "New Title", @class = "headerBox"};

并将TextBoxFor()方法更改为

@Html.TextBoxFor(m => m.Title, TitleClass)

旁注:设置disabled = "disabled"表示文本框的值不会回发,控制器中的属性Title将为空