以下是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和数据注释不适用于淘汰赛。
答案 0 :(得分: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;
}
};