重新加载局部视图
Reload Partial View
我在 ajax 成功后重新加载部分视图时遇到问题。我的部分视图存储在
<div id="partial">@Html.Partial("_Departments", Model)</div>
这在部门视图的索引中
我正在尝试这个(显然行不通)
$("#partial").load('@Url.Action("Index", "_Departments")');
如何重新加载局部视图,其他一切都很好,因为当我刷新页面时我得到了预期的结果。
谢谢
在我的一位同事的帮助下完成了这项工作...
在我的控制器中,对于 Json 响应中的部分视图,我必须 return html。
return Json(new { Success = true, Msg = "Field successfully added", html = RenderPartialViewToString("_IndexTable", returnModel) }, JsonRequestBehavior.AllowGet);
还必须使用 RenderPartialViewToString
的方法创建一个 BaseController class
public string RenderPartialViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
var viewContext = new ViewContext(this.ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(this.ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
最后在我看来必须添加以下行
$("#partial").html(data.html);
我在 ajax 成功后重新加载部分视图时遇到问题。我的部分视图存储在
<div id="partial">@Html.Partial("_Departments", Model)</div>
这在部门视图的索引中
我正在尝试这个(显然行不通)
$("#partial").load('@Url.Action("Index", "_Departments")');
如何重新加载局部视图,其他一切都很好,因为当我刷新页面时我得到了预期的结果。
谢谢
在我的一位同事的帮助下完成了这项工作...
在我的控制器中,对于 Json 响应中的部分视图,我必须 return html。
return Json(new { Success = true, Msg = "Field successfully added", html = RenderPartialViewToString("_IndexTable", returnModel) }, JsonRequestBehavior.AllowGet);
还必须使用 RenderPartialViewToString
的方法创建一个 BaseController classpublic string RenderPartialViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
var viewContext = new ViewContext(this.ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(this.ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
最后在我看来必须添加以下行
$("#partial").html(data.html);