web-dev-qa-db-ja.com

Html.EditorFor()などのMvcヘルパーでKnockoutのデータバインド属性を使用する方法

この@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());
});
13
Vlado Pandžić

EditorForへの3番目のパラメーターは、本来の動作を実行しません。

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" });
31
Matt Houser

私はこれに少し遅れていることを理解していますが、これが私が使用している解決策です。

次のように、フィールドの名前(この場合は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 })

これが誰かを助けることを願っています。

1
Justin Cale