Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ajax注入部分视图-Javascript/JQuery布局_C#_Jquery_Ajax_Asp.net Mvc - Fatal编程技术网

C# Ajax注入部分视图-Javascript/JQuery布局

C# Ajax注入部分视图-Javascript/JQuery布局,c#,jquery,ajax,asp.net-mvc,C#,Jquery,Ajax,Asp.net Mvc,我有一个局部视图,当页面加载时,我需要加载到一个div中,有人知道我怎么做吗?我很确定它需要通过Ajax加载,而不仅仅是@Html.Partial 我有一个div,我将几乎所有内容加载到整个站点中,为了能够在页面加载中加载这一部分视图,我的站点的其余部分使用Ajax.ActionLink来完成: <div id="placeholder""></div> 如果使用jQuery,可以执行以下操作: $('#foo').load('path/to/your/partial/

我有一个局部视图,当页面加载时,我需要加载到一个div中,有人知道我怎么做吗?我很确定它需要通过Ajax加载,而不仅仅是@Html.Partial

我有一个div,我将几乎所有内容加载到整个站点中,为了能够在页面加载中加载这一部分视图,我的站点的其余部分使用Ajax.ActionLink来完成:

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

如果使用jQuery,可以执行以下操作:

$('#foo').load('path/to/your/partial/file');
我很确定它需要通过Ajax加载,而不仅仅是作为一个 @Html.Partial

我有点被误解了,有什么困难吗?您只需通过ajax调用partial controller方法,并将返回的数据放入控制器,如下所示:

$('#foo').load('path/to/your/partial/file');
客户端:

<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();
    }
<div>my partial</div>
MyPartial.cshtml:

<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();
    }
<div>my partial</div>
my partial

您可以按如下方式执行:

document.ready()
中调用您的
操作
,该操作将以字符串形式返回部分视图,然后您可以使用jquery中的
replace()
替换此结果:

Ajax调用:

    $(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();
        }
    }
可能重复:这正是您需要的: