bge*_*eek 19 asp.net-mvc jquery json
我使用ASP.NET MVC和jQuery,并且对我的控制器有很多Ajax请求.
使用部分视图(usercontrols)在加载页面时构建初始视图.然后,如果我需要根据我的Ajax请求追加/替换数据,我会从Json响应中构建HTML.
这种方法让我完全掌控,即.如果出现问题,我可以从控制器获取额外信息,然后根据该信息显示错误消息.
然而,最近我对在部分视图和从Json生成HTML的部分中维护HTML结构所做的所有额外工作感到非常恼火.
我喜欢制作一个jQuery ajax请求,然后让控制器返回PartialView("mypartialview"),然后只使用jQuery替换视图中的HTML.
但是,这样我就无法从控制器中附加额外的数据 - 无论是局部视图给我的是什么 - 或者什么都没有.至少那是我目前的看法.
如果某些验证在我的控制器操作中的某个时刻出错,我不想返回局部视图的HTML.
那么你如何处理这个问题呢?
谢谢阅读.
Mag*_*pie 20
基于这个 stackoverflow anwser,我刚刚开始做同样的事情.
首先为控制器类创建一个扩展方法.
public static string RenderViewToString(this Controller controller, string viewName, object model)
{
using (var writer = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
controller.ViewData.Model = model;
var viewCxt = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, writer);
viewCxt.View.Render(viewCxt, writer);
return writer.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在controllers动作方法中返回json.
return Json(new
{
Html = this.RenderViewToString("MyView", model),
SomeExtraData = data
});
Run Code Online (Sandbox Code Playgroud)
你的ajax请求现在将收到包含在其中的html的json.仍在尝试使用这种方法而不是返回普通的Html片段.
希望有所帮助.
编辑更新以使用剃须刀
| 归档时间: |
|
| 查看次数: |
16868 次 |
| 最近记录: |