Как использовать атрибут привязки данных Knockout в помощниках Mvc, таких как Html.EditorFor()
Я попробовал это
@Html.EditorFor(model => model.Name, " ", new { data_bind = "value:firstName" });
и другие возможные перегрузки, но ни один из них не работает.
Остальная часть кода:
<script type="text/javascript">
$(document).ready(function () {
function AppViewModel() {
this.firstName = ko.observable("");
this.lastName = ko.observable("");
}
ko.applyBindings(new AppViewModel());
});
Ответы
Ответ 1
Ваш третий параметр EditorFor
не делает то, что вы думаете, что он должен делать.
См. http://msdn.microsoft.com/en-us/library/ff406461(v=vs.98).aspx
EditorFor
не может добавлять атрибуты HTML к элементу. Вместо этого используйте TextBoxFor
:
@Html.TextBoxFor(model => model.Name, new { data_bind = "value:firstName" });
Ответ 2
Я понимаю, что я немного опаздываю на этом, но вот решение, которое я использовал.
Передайте имя поля (в данном случае name
) в шаблон редактора как часть additionalViewData
так:
@Html.EditorFor(t => t.name, "", new { fieldName = "name" })
Затем в вашем editorTemplate
вы можете получить следующее:
@{
var fieldName = ViewData.Where(v => v.Key == "fieldName").FirstOrDefault().Value;
}
@Html.TextBox("", Model, new { data_bind = "value:"+fieldName })
Надеюсь, это поможет кому-то.