Пользовательский атрибут с тире в имени с использованием помощников EditorFor / TextBoxFor / TextBox

Я использую Knockout-JS для привязки свойств в моем представлении к моему представлению модель. Knockout-JS использует настраиваемый атрибут «привязка данных», который вы должны добавить к элементам управления, в которых вы хотите быть привязаны для просмотра объектов модели.

Пример:

<input type='text' name='first-name' data-bind='value: firstName'/>

Обратите внимание на атрибут «привязка данных».

При визуализации моего представления у меня возникли проблемы с отображением текстового поля с этим атрибутом. Мне известно, что все помощники Html.EditorFor, Html.TextBoxFor и Html.TextBox принимают анонимный объект, который вы можете использовать для указания настраиваемых атрибутов. Единственная проблема с этой реализацией заключается в том, что C # не допускает тире в качестве имен переменных, поэтому она не будет компилироваться: @ Html.EditorFor (m => m.FirstName, new {data-bind = "value: firstName"});

Единственное, что я могу придумать, это (в модели представления):

public class DataBindingInput
{
     public string Value { get; set; }
     public string DataBindingAttributes { get; set }
}

public class MyViewModel
{
    ...
    public DataBindingValue firstName { get; set; }
    ....
}

И шаблон представления под названием "DataBindingInput.cshtml":

@model DataBindingInput
<input type='text' data-binding='@Model.DataBindingAttributes' value='@Model.Value'>

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

Как я могу заставить это работать?

18
задан Michael Brennan 29 June 2011 в 19:02
поделиться