Я использую Knockout-JS, чтобы связать свойства моего представления с моделью представления. Knockout-JS использует пользовательский атрибут под названием «привязка данных», который необходимо добавить к элементам управления, в которых вы хотите быть привязанными для просмотра объектов модели.
Пример:
<input type='text' name='first-name' data-bind='value: firstName'/>
Обратите внимание на атрибут data-bind.
В моем представлении представления у меня возникают проблемы при отображении текстового поля с этим атрибутом. Мне известно, что все помощники 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'>
Единственная проблема, связанная с этим, заключается в том, что я теряю автоматическое генерирование имени входа, поэтому оно не будет работать на постбеке, потому что связыватель модели не знает, как его связать.
Как я могу сделать эту работу?