Проблема RenderAction и ModelState - PullRequest
0 голосов
/ 30 июля 2009
    public ActionResult TestControl()
    {
        return PartialView();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult TestControl(FormCollection form)
    {
        if(!IsValid(form))
        {
            ModelState.AddModelError("_FORM", "Some error");
        }
        return Redirect(Request.UrlReferrer.AbsoluteUri);;
    }

Если в сообщении нет ошибок, все работает нормально. Но как получить текущее состояние модели в методе TestControl (), если я добавлю несколько ошибок?

1 Ответ

0 голосов
/ 30 июля 2009

У меня была такая же проблема, и с помощью ValidationApplicationBlock и небольшой функции я получил это. Все с помощью ссылки на сайт Дэвида Хейдена (http://www.davidhayden.com/)

if (thread.HasErrors)
                {
                    AddValidationResults(thread.Errors, ViewData.ModelState, ValueProvider);
                    return View(thread);
                }

Тогда внутри моего BaseController у меня есть:

protected static void AddValidationResults(ValidationResults results,
        ModelStateDictionary modelState, IDictionary<string,ValueProviderResult> valueProvider)
{
    foreach (ValidationResult result in results)
    {
        modelState.AddModelError(result.Key,result.Message);
        modelState.SetModelValue(result.Key, valueProvider[result.Key]);
    }
}

Ключ - вторая строка:

modelState.SetModelValue

Приветствия

Andrew

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