Html.TextBox для формата и класса css - PullRequest
28 голосов
/ 22 января 2011

Две строки кода ниже работают нормально, но я хочу их объединить.Я имею в виду: я хочу использовать @class в первой строке кода.Как я могу это сделать?

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

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

спасибо,

Филипп

Ответы [ 3 ]

66 голосов
/ 13 апреля 2011

Я знаю, что опоздал, но я только что нашел решение этой проблемы:

<%: Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", Value=String.Format("{0:d}", Model.StartDate) })%>
0 голосов
/ 23 августа 2012

Опять же, может быть поздно, но я считаю, что гораздо лучшим решением будет использовать плагин jquery.maskedinput (также доступен как пакет nuget).

Почему лучше использовать плагин, чем просто формат ввода? Что ж, когда кто-то изменит ввод, вы потеряете форматирование, если не используете плагин.

Здесь вы можете найти пример использования и демонстрацию того, как это работает.

0 голосов
/ 23 января 2011

Боюсь, нет чистого способа добиться этого.Есть несколько возможностей:

  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. Оберните эти текстовые поля в 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
    }
    
...