Подтвердить что ты не робот

Как использовать атрибут привязки данных 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());
});

4b9b3361

Ответ 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 })

Надеюсь, это поможет кому-то.