2010-11-09 17 views
23

Acabo de empezar a jugar con knockout.Js, que es un marco fantástico Steve realmente ha hecho bien con eso. Una cosa que no puedo hacer en el minuto es implementarla con mis Html Helpers. Así que para exmaple Tengo:Knockout.js y MVC

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

pero me gustaría línea usar el databind sobre eso, pero en el momento en que puedo conseguir el "databind" atributo en el ayudante. He usado antes de atributos tales como @class, Id, etc, pero éste es complicado debido a las - cualquier idea .. He intentado:

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

y

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

pero no alegría. que utilizamos en gran medida los ayudantes editor y cuadro de texto y realmente me gustaría integrarlos en el artículo de noquear con ..

Cualquier ayuda mucho appretiated

+0

Esto ha demostrado ser un poco largo aliento HtmlHelper así que estoy pensando, ¿Hay alguna disposición o este podría ser mi primer intento de mérito en un proyecto de SO propio? –

Respuesta

32

Esto debería funcionar:

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

Los nombres de variables no pueden contener un guión (-), pero si se utiliza un guión bajo (_) en un atributo HTML, se convierte automáticamente en un guión cuando se 'renderiza'.

+0

Wow gracias nunca lo sabía :) +1 por un consejo útil :) –

+0

Como referencia, creo que esto es solo MVC3 ... – Tim

+5

la expresión debe ser nueva {data_bind = "value: SupplierName"} – Quango

16

Puede proporcionar atributos ya sea objeto como anónima o como un diccionario . En este caso particular, un diccionario debe utilizarse:

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

Saludos Robert, yo acababa de llegar a eso. One Gotcha fue el "SupplierName" que debe ser "value: SupplierName" .. Gracias;) –

+0

Bien. Los valores de atributo pueden ser cualquier cosa ... incluso 'value: SupplierName'. ;) Saludos. –

+0

agrred era el valor: PropertyName que me había perdido al tener PropertName no parecía funcionar? También necesito agregar el atributo valueUpdate o no parece actualizar mi valor subyacente por algún motivo. –

3

Utilicé la respuesta de Jim como la base de mi solución MVC 4.

de Jim:

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

Mina:

@Html.TextBoxFor(model => model.SupplierName, new { data_bind = "value: SupplierName" }) 
Cuestiones relacionadas