2

3 つのフィールドのうち少なくとも 1 つが空でないことを検証したいと思います。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);
        }

EmployeeId と ManagerId は、複数選択を使用してビューに実装されます。初めて SuperManagerId を変更したときに一度検証されました。そして、フォームを再度変更しようとしたり、フォームを送信しようとしても、リモート検証が機能しません。

ビューで検証を強制しようとしました:

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

しかし、それは役に立ちませんでした。

4

1 に答える 1