2

以下は、ASP.NET MVC のビュー モデルです。

public class Email
{
  public string Selected { get; set; }
  public string Name { get; set; }
}
public class User
{
  public string UserName { get; set; }
  public IList<Email> Emails { get; set; }
}

これはビューに渡され、ノックアウト ビュー モデルを定義する際に次のように表示されます。

var viewModel = {
  UserName: ko.observable("@Model.UserName"),
  Emails: ko.observableArray(@Html.Json(@Model.Emails) || []),
  // many other things
}

Email.Selectedであることを確認したいrequired。単一のオブジェクトではなく、リストを使用してそれを行う方法。それが最も簡単な質問であることはわかっていますが、このトピックに関するものは何も見つかりませんでした。

残念ながら、Fluent とデータ注釈はノックアウトでは機能しないため、クライアントでノックアウト検証を使用します。

4

1 に答える 1

2

コメント ノックアウト カスタム検証で述べたように、ここでノックアウト カスタム検証を使用する方法の例を追加します。

var viewModel = {
  UserName: ko.observable("@Model.UserName"),
  Emails: ko.observableArray(@Html.Json(@Model.Emails) || []).
          extend({
             customRequired: { message: 'Selected is required' }
          });

  // many other things
}


ko.validation.rules['customRequired'] = {
    validator: function (emailList) {
        var pass = true;
        ko.utils.arrayFirst(emailList(), function(email){
           if(email.Selected == '')       //if Selected property is empty
           {
             pass = false;
             return true;                 //break the loop
           }
        });
       return pass;
    }
};
于 2013-03-12T03:03:30.653 に答える