asp.net - 使用 RenderPartialToString 时显示模型状态错误的问题

标签 asp.net asp.net-mvc json partial-views

我正在使用以下代码:

public string RenderPartialToString(ControllerContext context, string partialViewName, ViewDataDictionary viewData, TempDataDictionary tempData)
    {
        ViewEngineResult result = ViewEngines.Engines.FindPartialView(context, partialViewName);

        if (result.View != null)
        {
            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter output = new HtmlTextWriter(sw))
                {
                    ViewContext viewContext = new ViewContext(context, result.View, viewData, tempData, output);
                    result.View.Render(viewContext, output);
                }
            }

            return sb.ToString();
        }

        return String.Empty;
    }

通过JSON返回局部 View 和表单。它可以正常工作,但是一旦我收到模型状态错误,我的 ValidationSummary 就不会显示。 JSON 仅返回默认表单,但不会突出显示验证错误或显示验证摘要。

我错过了什么吗?

这就是我调用 RenderPartialToString 的方式:

string partialView = RenderPartialToString(this.ControllerContext, "~/Areas/User/Views/Account/ChangeAccountDetails.ascx", new ViewDataDictionary(avd), new TempDataDictionary());

最佳答案

在这个问题上花了太多时间后,我发现不应将 ModelState 项添加到 viewContext.Controller.ViewData.ModelState 中,而应将其添加到 viewContext.ViewData.ModelState。进行此更改后,将呈现 ModelState 错误。

关于asp.net - 使用 RenderPartialToString 时显示模型状态错误的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2740149/

相关文章:

asp.net - Sitecore 针对外部成员数据库对用户进行身份验证

javascript - 无法获取正确的用户 ID 来删除 vue.js 中的列表元素

asp.net-mvc - MVC 帮助程序 - 使用 @URL 作为图像 src?

javascript - 使用推送构建 JSON 对象数组时出现意外行为

javascript - 使用表单如何将 POST 的有效负载作为 JSON 发送

jquery - 从 json 数组中获取第一个值

javascript - 聚焦 asp.net 文本框的事件

asp.net - CookieContainer 和 Response.Cookies 集合有什么区别?

asp.net-mvc - 有没有办法在 Controller 中获取 PartialView HTML 内容?

c# - 将 MVC 站点母版页转换为 Razor 布局页 - 如何处理代码隐藏?