2010-11-09 2 views
23

Только что начал играть с knockout.Js, который является фантастической картой. Стив действительно хорошо справился с этим. Одна вещь, которую я, похоже, не могу сделать в данный момент, - это использовать ее с моими помощниками Html. Так exmaple я получил:Knockout.js и MVC

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

но я линия использовать DataBind на это, но на минуту я не могу получить «DataBind» атрибут в помощнике. Я использовал атрибуты перед такими, как @CLASS, Id и т.д., но это один сложно из-за каких-либо идей - .. Ive пытался:

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

и

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

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

Любая помощь очень appretiated

+0

Это оказалось немного долго наматывается, так что я имею в виду HtmlHelpers, Есть ли в наличии или могут ли это быть мой первый стоит попытка сам проект ОС? –

ответ

32

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

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

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

+0

Wow thanks никогда не знал, что :) +1 для полезной подсказки :) –

+0

Для справки, я думаю, что это только MVC3 ... – Tim

+5

выражение должно быть новым {data_bind = "value: SupplierName"} – Quango

16

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

<%: Html.TextBoxFor(m => m.SupplierName, new Dictionary<string, object> { { "data-bind", "SupplierName" } }) %> 
+0

Привет, Роберт, я просто добрался до этого. Один Gotcha был «SupplierName» должен быть «value: SupplierName» .. Спасибо;) –

+0

Ну. Значения атрибутов могут быть любыми ... даже 'value: SupplierName'. ;) Приветствия. –

+0

agrred это значение: PropertyName, которое я пропустил, просто имея PropertName, похоже, не работал? Также необходимо добавить атрибут valueUpdate или, по некоторым причинам, он не обновляет мое базовое значение.? –

3

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

Джима:

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

Mine:

@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" }) 
Смежные вопросы