首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RenderAction和ModelState问题

RenderAction和ModelState问题
EN

Stack Overflow用户
提问于 2009-07-30 07:43:40
回答 1查看 639关注 0票数 0
代码语言:javascript
复制
    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);;
    }

如果post没有错误,则一切工作正常。但是如果我添加了一些错误,如何在TestControl()方法中获得当前的模型状态呢?

EN

回答 1

Stack Overflow用户

发布于 2009-07-30 07:57:28

我也遇到了同样的问题,使用ValidationApplicationBlock和一个小函数,我得到了以下结果。所有这些都得益于大卫·海登的网站(http://www.davidhayden.com/)。

代码语言:javascript
复制
if (thread.HasErrors)
                {
                    AddValidationResults(thread.Errors, ViewData.ModelState, ValueProvider);
                    return View(thread);
                }

然后在我的BaseController中,我有:

代码语言:javascript
复制
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]);
    }
}

关键是第二行:

代码语言:javascript
复制
modelState.SetModelValue

干杯,

安德鲁

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1205028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档