2

Я хотел бы подтвердить, что хотя бы одно из трех полей не пусто. Я пытаюсь сделать это, используя механизм проверки достоверности ASP.NET.Удаленная проверка MVC 3 для нескольких полей

У меня есть следующие модели:

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 реализуются на представлении с использованием MULTISELECT. Он был проверен один раз, когда я впервые модифицировал SuperManagerId. И когда я пытаюсь изменить его снова или даже отправить свою форму, удаленная проверка не работает.

Я пытался заставить проверки на представлении:

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

, но это не помогло.

+0

Является ли запрос удаленной проверки даже выполненным? Установите fiddler (http://fiddler2.com) и проверьте, отправлен ли запрос на проверку ... – Marko

+1

Проверено. Запрос отправляется только один раз (после первого редактирования). И ошибок в консоли браузера нет. –

ответ

2

Я нашел проблему. Результат первой проверки был кеширован. Атрибут [OutputCache(Location = OutputCacheLocation.None, NoStore = true)] помог.

Смежные вопросы