1

モデルデータを渡してアクションメソッドから部分ビューを呼び出したいのですが、部分ビューが処理され、UI が生成されると、部分ビュー html を in action で変数に保存したいと考えています。

以下のように JavaScript から部分ビューを読み込んで、部分ビューの結果を js 変数に格納することがよくあります。

可能であれば、アクションメソッドから部分ビューを呼び出す方法と、アクションメソッドで部分ビューの結果を変数に格納する方法を教えてください。ありがとう

public PartialViewResult yourpartialviewresult()
{
    return PartialView("partialview", model);
}


client side
-----------
var html;

$.ajax({
    type: 'GET',
    url: '/home/yourpartialviewresult',
    dataType: 'html', //be sure to use html dataType
    contentType: 'application/json; charset=utf-8',
    success: function(data){
        html = data;
    },
    complete: function(){ }
 });
4

2 に答える 2

4

ViewNameまず、受け入れてModelHTML 文字列を返すas メソッドを作成できます。

public static string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
    controllerContext.Controller.ViewData.Model = model;
    using (var sw = new StringWriter())
    {
        var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
        var viewContext = new ViewContext(controllerContext, viewResult.View,
                controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
        viewResult.View.Render(viewContext, sw);
        viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
        return sw.GetStringBuilder().ToString();
    }
}

使用法もJsonResult代わりに返す必要がありますPartialViewResult

public JsonResult yourpartialviewresult()
{
    return Json(new
            {
                data = RenderRazorViewToString(this.ControllerContext, "partialview", model)
            });
}
于 2013-09-17T12:41:27.480 に答える