正在更新部分区域 MVC3

本文关键字:区域 MVC3 更新部 | 更新日期: 2023-09-27 17:55:47

我正在寻找一些使用剃刀引擎更新 MVC3 中部分区域的指针。

现在,我正在使用jquery来处理ajax请求。

一点上下文:我有一个"集合"列表,我将其包装在部分视图中,只是在相关视图的模型对象中的列表上执行 for-each 。

然后我有一个"添加集合"按钮,只显示一个模式对话框,其中包含用于添加新集合的表单。单击"添加"后,ajax 请求会在数据库中创建集合,当前返回一个指示成功的 JSON 对象以及字符串"集合已创建"。在我的jquery ajax处理程序中,我检查了这个json对象,以检查状态是否为"成功",然后使用jquery显示包含"集合已创建"字符串的类似咆哮的通知。

现在我的问题是:无论如何我可以更新这个 ajax 请求中的集合列表吗?无论如何,我可以以某种方式抛出部分视图,迭代集合,并返回成功的json对象吗?

简而言之:我想以某种方式更新 HTML,但仍保留 JSON 对象,以便我可以显示我的通知。

正在更新部分区域 MVC3

是的,您可以将部分呈现为字符串并将其包装为 JSON。我经常使用这种方法,但我听到人们说这是不好的做法。到目前为止,我没有遇到任何问题,我已经使用它几年了。

我实际上使用返回 JSON 的自定义操作结果。它包装多个视图,并将它们作为字符串数组发送回客户端。"不太直接"位是从控制器操作中将视图呈现为字符串。下面是一些代码来执行此操作:

    public static string RenderViewToString(ControllerContext controllerContext, string viewPath, ViewDataDictionary viewData, TempDataDictionary tempData)
    {
        ViewEngineResult result = ViewEngines.Engines.FindPartialView(controllerContext, viewPath);
        if (result == null || result.View == null)
            throw new Exception("No view found for the following path: " + viewPath);
        ViewContext viewContext = new ViewContext(controllerContext, result.View, viewData, tempData, new StringWriter());
        HtmlHelper helper = new HtmlHelper(viewContext, new ViewPage());
        return helper.Partial(viewPath, viewData).ToHtmlString();
    }

您始终可以在提交处理程序中发出两个 ajax 请求。每个请求将调用不同的控制器操作(创建、列出)。

如果这对您不起作用,您是否考虑过在部分内显示成功消息?