2010-11-09 18 views
23

Appena iniziato a giocare con knockout.Js che è un quadro fantastico, Steve ha fatto davvero bene con quello. Una cosa che non riesco a fare al momento è implorarla con i miei helper Html. Così per exmaple ho:Knockout.js e MVC

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

ma mi piacerebbe linea per usare il databind su questo, ma al minuto non posso ottenere il "databind" attributo in aiuto. Ho usato attributi prima come @class, Id ecc ma questo è difficile a causa delle - tutte le idee .. Ive ha provato:

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

e

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

ma nessuna gioia. abbiamo pesantemente utilizzare l'Editor e della casella di testo aiutanti e mi piacerebbe davvero integrare questi nella voce del knock out con ..

Qualsiasi aiuto molto appretiated

+0

Questo ha dimostrato di essere un po 'lungo senza fiato HtmlHelpers così sto pensando, non v'è alcuna disposizione o questo potrebbe essere il mio primo tentativo utile a un mio progetto OS? –

risposta

32

Questo dovrebbe funzionare:

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

I nomi delle variabili non possono contenere un trattino (-), ma se si utilizza un carattere di sottolineatura (_) in un attributo HTML, viene automaticamente convertito in un trattino quando è "reso".

+0

Wow grazie non l'ho mai saputo :) +1 per un suggerimento utile :) –

+0

Per riferimento, penso che questo sia solo MVC3 ... – Tim

+5

l'espressione dovrebbe essere nuova {data_bind = "valore: SupplierName"} – Quango

16

È possibile fornire attributi sia oggetto come anonima o come un dizionario . In questo caso particolare un dizionario dovrebbe essere utilizzato:

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

Cheers Robert, ci sarei appena arrivato. One Gotcha era il "SupplierName" deve essere "valore: SupplierName" .. Grazie;) –

+0

Bene. I valori degli attributi possono essere qualsiasi cosa ... anche 'value: SupplierName'. ;) Saluti. –

+0

agrred era il valore: PropertyName che mi era mancato avendo solo PropertName non funzionava? Inoltre, è necessario aggiungere l'attributo valueUpdate o non sembra che aggiorni il mio valore sottostante per qualche motivo. –

3

Ho usato la risposta di Jim come base per la mia soluzione MVC 4.

Jim:

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

Mine:

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