我有一个局部视图,我需要在页面加载时将其加载到 div 中,有人知道我该怎么做吗,我很确定它需要通过 Ajax 加载,而不仅仅是 @Html.Partial。
我有一个 div,我将几乎所有内容加载到整个网站中,并且希望能够在页面加载时仅加载这一个部分视图,我的网站的其余部分使用 Ajax.ActionLink 来完成:
<div id="placeholder""></div>
这真是漫长的一天,我很确定我现在只是脑死亡。
感谢您的帮助。
谢谢,
标记
我有一个局部视图,我需要在页面加载时将其加载到 div 中,有人知道我该怎么做吗,我很确定它需要通过 Ajax 加载,而不仅仅是 @Html.Partial。
我有一个 div,我将几乎所有内容加载到整个网站中,并且希望能够在页面加载时仅加载这一个部分视图,我的网站的其余部分使用 Ajax.ActionLink 来完成:
<div id="placeholder""></div>
这真是漫长的一天,我很确定我现在只是脑死亡。
感谢您的帮助。
谢谢,
标记
你可以这样做:
在document.ready()
调用您的Action
which 将您的部分视图作为字符串返回,然后您可以replace()
在 jquery 中使用替换此结果:
阿贾克斯调用:
$(document).ready(function() {
$.ajax({
url: "/ControllerName/ActionName",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
$("#placeholder").replaceWith(data);
}
});
});
控制器:
[HttpPost]
public JsonResult ActionName(ModelType model)
{
......
return Json((RenderRazorViewToString("PartialViewName", model)), JsonRequestBehavior.AllowGet);
}
[NonAction]
public string RenderRazorViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
我很确定它需要通过 Ajax 加载,而不仅仅是 @Html.Partial。
我有点误解了,这有什么困难?您只需通过 ajax 调用部分控制器方法并将返回的数据放入您的控制器中,如下所示:
客户:
<script src="http://code.jquery.com/jquery-1.10.2.min.js" ></script>
<script>
$(function() {
$.ajax({
url: "/Home/MyPartial",
success: function(data) {
$("#placeholder").html(data);
}
});
});
</script>
<div id="placeholder"></div>
控制器:
public ActionResult MyPartial()
{
return PartialView();
}
MyPartial.cshtml:
<div>my partial</div>
如果您使用的是 jQuery,您可以执行以下操作:
$('#foo').load('path/to/your/partial/file');