私はMVC4とノックアウトを使用しています。ビューモデルに強く型付けされたフォームがページにあります。そのビューモデルでは、たとえば次のような検証が定義されています。
[Required(ErrorMessage = "Title is required")]
public string Title { get; set; }
必須フィールドに入力せずにフォームに標準の投稿を行うと、アクションはモデルが無効であることを確認してビューに戻り@Html.ValidationSummary
、フォームにあるためメインの検証メッセージが表示されます。@Html.ValidationMessageFor
フィールドに関連付けたため、個々のフィールドも無効(メッセージ付き)としてマークされます
そこで、ノックアウトを追加し、フォームを投稿する代わりに、今呼んでいますko.utils.postJson($("form")[0], self);
。これでほとんどすべてが機能します。必須フィールドが入力されていない状態でフォームを投稿すると、個々の検証メッセージが表示されないことを除いて、アクションはモデルが無効であることを検出してビューに戻ります。
投稿前に入力されたフィールドも失われます。私は、mvcビューモデルを読み取り、変数をそのような値に設定することで、これを修正しようとしました。
var model = @Html.Raw(Json.Encode(Model));
そして、私のノックアウトビューモデルでその値を設定します
self.Title = ko.observable(model.Title);
しかし、「1」と入力すると、失敗した投稿が返されると、フィールドに「「1」」と入力されます。
これはフォームがそれほど複雑ではないので、回避できるのであれば、新しい検証レイヤーを導入したくありません。検証用の投稿があってもかまいません。
ありがとう、ダン