Ajax Injected Partial View - Javascript/JQuery placement

本文关键字:JQuery placement Javascript Injected Partial View Ajax | 更新日期: 2023-09-27 18:32:17

我有一个部分视图,我需要在页面加载时加载到div 中,有谁知道我该怎么做,我很确定它需要通过 Ajax 加载,而不仅仅是作为 @Html.Partial。

我有一个div,我几乎

将所有内容加载到整个站点中,并且希望能够在页面加载时只加载这一个部分视图,我网站的其余部分使用Ajax.ActionLink来完成:

<div id="placeholder""></div>

这是非常漫长的一天,我很确定我现在只是脑残。

感谢您的帮助。

谢谢

马克

Ajax Injected Partial View - Javascript/JQuery placement

您可以按如下方式执行此操作:

document.ready()调用你的Action,它将把你的部分视图作为字符串返回,然后你可以在jquery中使用replace()替换这个结果:

阿贾克斯调用:

    $(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.部分。

我有点误会了,这有什么困难?您只需通过 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');