Нокаут.js и mvc.
-
29-09-2019 - |
Вопрос
Только что начал играть с Knockout.js, который является фантастическим каркасом, Стив действительно проделал хорошо с этим. Одна вещь, которую я не могу, казаться, по-видимому, в той минуте - это имплименте его с моим HTML-помощниками. Так что для Exmaple у меня есть:
<%: Html.TextBoxFor(model => model.Division) %>
Но я бы выстроил, чтобы использовать ДАН DACOND на этом, но в то время, но в то время я не могу получить атрибут «Data-Bind» в помощник. Я использовал атрибуты раньше, например, @Class, ID и т. Д., Но этот хитрый из-за - любые идеи .. Ive попробовал:
<%: Html.TextBoxFor(model => model.SupplierName, new { data-bind = "SupplierName"}) %>
и
<%: Html.TextBoxFor(model => model.SupplierName, new { "data-bind"" = "SupplierName"}) %>
Но нет радости. Мы в значительной степени используем помощники редактора и текстовых коробок, и мне действительно хотелось бы интегрировать их в товар с выбитым ..
Любая помощь очень пройдена
Решение
Это должно работать:
<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>
Имена переменных не могут содержать дефис (-), но если вы используете подчеркивание (_) в атрибуте HTML, он автоматически преобразуется в дефис, когда его «визуализируется».
Другие советы
Вы можете поставлять атрибуты либо как анонимный объект или в качестве словаря. В этом конкретном случае следует использовать словарь:
<%: Html.TextBoxFor(m => m.SupplierName, new Dictionary<string, object> { { "data-bind", "SupplierName" } }) %>
Я использовал ответ Джима в качестве основы для моего решения MVC 4.
Джим:
<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>
Мой:
@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" })
Видеть Использование HTML.TextBoxFor с классом и пользовательской собственностью (MVC) Для того, как это сделать в MVC3. Я использую mvc2, так что вышеуказанный ответ был на месте для меня