ModelStateError ArrayTypeMismatchException после миграции с Asp.net MVC 2 на 3 - PullRequest
1 голос
/ 02 февраля 2011

следующий код прекрасно работал в MVC 2, но после перехода на MVC 3 он вызывает исключение типа ArrayTypeMismatchException при выполнении метода modelState.AddModelError

public static void CopyTo(this RulesException ruleException, ModelStateDictionary modelState)
{
  foreach (var propertyError in ruleException.Errors)
  {
    string key = ExpressionHelper.GetExpressionText(propertyError.Property);
    var message = propertyError.Message;        
    modelState.AddModelError(key, message );        
  }
}

Это метод расширения, выполняемый после представления, не являющегосяпроверки.Это называется так

[HttpPost, Authorize]
public ActionResult Create(Entity entity)
{
  try
  {
       //..... perform creation of entity
  }
  catch (RulesException ex)
  {
    ex.CopyTo(Controller.ModelState);
  }

  return View(entity);
}

Есть идеи?спасибо

Стефано

1 Ответ

1 голос
/ 09 февраля 2011

У меня такая же проблема с аналогичным расширением. Убедитесь, что проект с вашим помощником ссылается на System.Web.MVC 3.0.0.0, а не на 2.0.0.0. Чтобы проверить это дважды, просто измените параметр «ModelStateDictionary» на «объект» в вашей функции CopyTo, и вы должны получить правильное сообщение об ошибке (ошибка в ссылке). Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...