2

我想验证三个字段中的至少一个不为空。我正在尝试使用 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);
        }

EmployeeIds 和 ManagerIds 使用多选在视图上实现。我第一次修改 SuperManagerId 时验证过一次。当我尝试再次修改它甚至提交我的表单时,远程验证不起作用。

我试图强制验证视图:

$('body').on('click', '#create-company', function () {
    $("form").validate().form();
    if ($("form").valid()) {
        alert('valid');
        $("form").submit();
    } else {
        alert('error');
    }
});

但这没有帮助。

4

1 回答 1

2

我发现了问题。第一次验证的结果被缓存。属性[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]有帮助。

于 2013-07-17T15:03:08.067 回答