RenderAction和ModelState问题

时间:2009-07-30 07:43:40

标签: asp.net-mvc

    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 :(得分:0)

我有同样的问题,使用ValidationApplicationBlock和一个小函数我得到了这个。所有人都可以参考David Hayden的网站(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

干杯,

安德鲁