我想验证三个字段中至少有一个不为空。我试图使用ASP.NET远程验证机制来做到这一点。
我有以下型号:
public class MyModel
{
public MyModel()
{
EmployeeIds = new List<int>();
ManagerIds= new List<int>();
}
[Remote("AtLeastOneSelected", "Company", AdditionalFields = "EmployeeIds, ManagerIds")]
public int? SuperManagerId { get; set; }
public IEnumerable<int> EmployeeIds { get; set; }
public IEnumerable<int> ManagerIds{ get; set; }
}
控制器:
public ActionResult AtLeastOneSelected(int supermanagerid, IEnumerable<int> employeeids, IEnumerable<int> managerids)
{
var isSuperManagerSelected = Request.Params["SuperManagerId"] != "null";
var isEmployeeSelected = Request.Params["EmployeeIds"] != "null";
var isManagerSelected = Request.Params["ManagerIds"] != "null";
return Json(isSuperManagerSelected || isEmployeeSelected || isManagerSelected, JsonRequestBehavior.AllowGet);
}
使用multiselect在视图上实现EmployeeIds和ManagerIds。 我第一次修改SuperManagerId时验证了一次。当我尝试再次修改它甚至提交我的表单时,远程验证不起作用。
我试图强制对视图进行验证:
$('body').on('click', '#create-company', function () {
$("form").validate().form();
if ($("form").valid()) {
alert('valid');
$("form").submit();
} else {
alert('error');
}
});
但它没有帮助。
答案 0 :(得分:2)
我发现了问题。
缓存了第一次验证的结果。属性[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
有所帮助。