Knockout.js и MVC - PullRequest
       13

Knockout.js и MVC

23 голосов
/ 09 ноября 2010

Только что начал играть с нокаутом. Js - фантастический фреймворк, с которым Стив действительно хорошо справился.Одна вещь, которую я не могу сделать в данный момент, это сделать это с моими помощниками HTML.Например, у меня есть:

 <%: Html.TextBoxFor(model => model.Division) %>

, но я хотел бы использовать привязку данных для этого, но в ту минуту я не могу вставить атрибут «привязки данных» в помощник.Ранее я использовал такие атрибуты, как @class, Id и т. Д., Но этот хитрый из-за ... любых идей ... Я пробовал:

<%: Html.TextBoxFor(model => model.SupplierName, new { data-bind = "SupplierName"}) %>

и

 <%: Html.TextBoxFor(model => model.SupplierName, new { "data-bind"" = "SupplierName"}) %>

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

Любая помощь, высоко оцененная

Ответы [ 4 ]

32 голосов
/ 21 декабря 2011

Это должно работать:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>

Имена переменных не могут содержать дефис (-), но если вы используете символ подчеркивания (_) в атрибуте HTML, он автоматически преобразуется в дефис при его «визуализации».

16 голосов
/ 09 ноября 2010

Вы можете предоставить атрибуты как анонимный объект или как словарь.В данном конкретном случае следует использовать словарь:

<%: Html.TextBoxFor(m => m.SupplierName, new Dictionary<string, object> { { "data-bind", "SupplierName" } }) %>
3 голосов
/ 25 апреля 2012

Я использовал ответ Джима в качестве основы для моего решения MVC 4.

Джима:

<%: Html.TextBoxFor(model => model.SupplierName, new { data_bind = "SupplierName"}) %>

Шахта:

@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" })
1 голос
/ 28 октября 2011

См. Использование Html.TextBoxFor с классом и пользовательским свойством (MVC) , чтобы узнать, как это сделать в MVC3. Я использую MVC2, поэтому приведенный выше ответ был точным для меня

...