1

ページの読み込み時に div に読み込む必要がある部分ビューがあります。これを行う方法を知っている人はいますか? @Html.Partial としてだけでなく、Ajax 経由で読み込む必要があると確信しています。

サイト全体のほぼすべてのコンテンツをロードする div があり、ページのロード時にこの 1 つの部分ビューだけをロードできるようにするため、サイトの残りの部分は Ajax.ActionLink を使用して達成します。

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

本当に長い一日でした。私は今まさに頭がおかしいと確信しています。

あなたの助けに感謝します。

ありがとう、

マーク

4

3 に答える 3

2

次のように実行できます。

あなたの部分的なビューを文字列として返すdocument.ready()呼び出しで、jquery を使用してこの結果を置き換えることができます。Actionreplace()

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();
        }
    }
于 2013-09-23T09:32:23.553 に答える
0

@Html.Partialとしてだけでなく、Ajax経由でロードする必要があると確信しています。

私は少し誤解されていますが、その難点は何ですか?次のように、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>
于 2013-09-23T07:28:49.660 に答える
-2

jQuery を使用している場合は、次のようなことができます。

$('#foo').load('path/to/your/partial/file');
于 2013-09-23T01:01:42.767 に答える