控制器渲染所有部分视图

时间:2013-10-07 16:06:45

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我是ASP.NET MVC4的新手。 我有一个使用大量部分视图的应用程序,目前我有一个控制器,我用它来为每个部分返回PartialView,制作一个非常长的文件。

public PartialViewResult somePartial()
    {
        return PartialView("someParital");

    }
public PartialViewResult someOtherPartial()
    {
        return PartialView("someOtherParital");

    }

有没有办法创建一个可以为整个文件夹/目录返回PartialView的控制器?

谢谢,

2 个答案:

答案 0 :(得分:1)

您可以使用Partial ViewsHTML Helper直接呈现到标记中。最简单的方法是将每个Partial View名称存储到List某处,然后使用它来按名称呈现每个Partial View

@{
    var myPartialViews = new string[] { "someParital", "someOtherParital" };
 }

@foreach(string partialView in myPartialViews)
{
    Html.Partial(partialView) //or Html.RenderPartial(partialView);
}

答案 1 :(得分:0)

您可以返回多个部分视图使用返回Json数据作为PartialView的字符串,如此处所述 https://stackoverflow.com/a/18978036/2318354

return Json(new {  strPartial1 = RazorViewToString.RenderRazorViewToString(this, "someParital", model) ,  strPartial12 = RazorViewToString.RenderRazorViewToString(this, "someOtherParital", model2) });

现在,不要使用UpdateTargetId On Success函数,而是按照以下方式执行Ajax Request

@Ajax.ActionLink("Link-Name", "ActionName", "ControllerName", new AjaxOptions {OnSuccess = "scsFunction" }) 

on javaScript

function scsFunction(response) {
    var temphtml1 = response.strPartial1 ;
    var temphtml2 = response.strPartial2 ;

    $("#dvPartial1").html(temphtml1);
    $("#dvPartial2").html(temphtml2);

    }

这样您就可以在一次行动呼叫时更新部分视图的数量