如何在保持ViewData的值检索的同时为Html.TextBox助手指定属性?

时间:2008-11-14 20:21:11

标签: asp.net-mvc

我正在使用Html.TextBox助手来创建文本框。我想在文本框上设置属性,我理解这是使用以下重载完成的:

Html.TextBox (string name, object value, object htmlAttributes)

但是,我想维护HTML帮助程序自动使用ViewData或ViewData.Model中的值的功能,我没有看到只指定名称和htmlAttributes的方法。这可能吗?

5 个答案:

答案 0 :(得分:60)

[编辑]在查看source code之后,您需要做的就是在签名中将值指定为null,该值采用name,value和htmlAttributes。如果该值为null,则它将尝试使用ViewData中的值。

Html.TextBox( "name", null, new { @class = "css-class" } );

答案 1 :(得分:8)

尝试剃刀

@Html.TextBox("name", "", new {@class = "css-class", @onclick = "alert('demo');"});

答案 2 :(得分:6)

如果您不需要提供模型中的值,您可以随时使用标准HTML:

<input type="text" name="fieldName" id="fieldName"/>

然后,您可以在标记中提供所需的任何属性。

答案 3 :(得分:2)

@Tvanfosson,谢谢你的回答。它今天给了我很多帮助。我试图为列表中的每个部分创建一个包含行的表。我想根据每个部分设置几个属性,你指出了我正确的方向。如果有人想看循环以及如何设置多个属性,请点击:

    <% foreach (var poPart in Model.myPartsList)
       { %>
         <tr>
             <td>
                <% var part = Model.PartID; %>
                <%: Html.TextBox(part.ToString(), null, new { @class = "narrowText", @id = part.ToString() })%>
             </td>
         </tr>
   <% } %>

答案 4 :(得分:0)

 @Html.TextBox("Name", "Value", new {@class = "class1 class2", @customAttributeName = "attributeValue"})