2013-05-23 13 views
13

Próbowałem tego @Html.EditorFor(model => model.Name, " ", new { data_bind = "value:firstName" }); i innych możliwych przeciążeń, ale żaden z nich nie działa.Jak używać atrybutu wiązania danych Knockout w pomocnikach Mvc, takich jak Html.EditorFor()

Reszta kodu:

<script type="text/javascript"> 
$(document).ready(function() { 

    function AppViewModel() { 
     this.firstName = ko.observable(""); 
     this.lastName = ko.observable(""); 
    } 
    ko.applyBindings(new AppViewModel()); 
}); 

+0

Polecam po prostu używać ogólnego html i nie używać helpera @ html.Editor. Jeśli potrzebujesz danych z modelu, użyj go do zbudowania AppViewModel – atbebtg

+0

Co to jest plik wyjściowy HTML, który tworzy twój edytor? Czy tworzy pole tekstowe lub etykietę? Czy brakuje w nim określonego atrybutu wiązania danych? – hawkke

+0

Tak, brakuje. –

Odpowiedz

30

3rd parametrem EditorFor nie robi tego, co myślisz powinno robić.

Zobacz http://msdn.microsoft.com/en-us/library/ff406461(v=vs.98).aspx

EditorFor nie można dodawać atrybutów HTML do elementu. Użyj TextBoxFor zamiast:

@Html.TextBoxFor(model => model.Name, new { data_bind = "value:firstName" }); 
+1

. Dla .Net Framework 4.6.1 i nowszych mogę potwierdzić, że '@ Html.EditorFor (m => m.FirstName, new {htmlAttributes = new {@class =" form-control ", data_bind =" value: firstName ", maxlength = 50}}); 'działa. ** data_bind ** jest nadal kluczem! –

2

Rozumiem Jestem trochę późno na to jedno, ale tu jest rozwiązanie używam.

podać nazwę pola (w tym przypadku name) do szablonu edytora jako część additionalViewData tak:

@Html.EditorFor(t => t.name, "", new { fieldName = "name" }) 

Następnie w editorTemplate można mieć to:

@{ 
    var fieldName = ViewData.Where(v => v.Key == "fieldName").FirstOrDefault().Value; 
} 
@Html.TextBox("", Model, new { data_bind = "value:"+fieldName }) 

Mam nadzieję, że to pomoże komuś.

+1

Upewnij się, że używasz znaczników do [odpowiednio sformatowania kodu] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks). To bardzo pomaga w czytelności. – royhowie

Powiązane problemy