Я использую 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'>
Единственная проблема с этим состоит в том, что я теряю автоматическое создание имени ввода, поэтому оно не будет работать при обратной передаче, потому что связыватель модели не знает, как его связать.
Как я могу заставить это работать?