Html.TextBoxFor格式和css类

时间:2011-01-22 17:13:06

标签: asp.net-mvc-2 html.textbox

下面的两行代码工作正常,但我想将它们组合起来。 我的意思是:我想在第一个代码行中使用@class。 我怎么能这样做?

<%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>

<%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>

感谢,

菲利普

3 个答案:

答案 0 :(得分:65)

我知道我迟到了,但我刚刚找到了解决这个问题的方法:

<%: Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", Value=String.Format("{0:d}", Model.StartDate) })%>

答案 1 :(得分:0)

恐怕没有干净的方法来实现这一目标。有几种可能性:

  1. 使用Product属性的编辑器模板:

    <%: Html.EditorFor(x => x.Product) %>
    

    并在此编辑器模板中:

    <%: Html.TextBox("Price", string.Format("{0:f}", Model.Product.Price), new { @class = "textBox150" }) %>
    <%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>        
    
  2. 编写一个附加类

  3. 的自定义助手
  4. 将这些文本框包装在span

    <span class="container150">
        <%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>
        <%: Html.TextBoxFor(model => model.Product.Name)%>
    </span>
    

    然后修改您的CSS规则:

    .container150 input {
        // some rule that applies to the textbox
    }
    

答案 2 :(得分:0)

同样,它可能会迟到,但我相信更好的解决方案是使用jquery.maskedinput插件(也可用作nuget包)。

为什么使用插件比使用输入格式更好?好吧,当有人修改输入时,如果你不使用插件,你将失去格式化。

Here你可以找到它的用法和演示。