ASP.NET MVC中的部分视图

时间:2010-05-12 09:00:18

标签: asp.net-mvc

如何创建由三个局部视图页面组成的视图页面?我正在使用ASP.NET MVC

    //
    // GET: /Partial/

    public ActionResult View1()
    {
        var upit = from i in proba.name
                   select i;
        return PartialView("upit",proba.name);
    }

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>
<div><%Html.RenderPartial("View1",proba.name); %></div>
</asp:Content>

为什么此代码返回错误:对象引用未设置为对象的实例。

2 个答案:

答案 0 :(得分:4)

我认为你想使用RenderAction而不是RenderPartial。 View1是一个动作,而不是一个视图。它返回部分视图upit。请注意,这需要MVC2(或MVC1 +期货)。你也可能想用ChildActionOnlyAttribute修饰动作,除非你打算从AJAX中调用它。

[ChildActionOnly]
public ActionResult View1()
{
    var upit = from i in proba.name
               select i;
    return PartialView("upit",proba.name);
}


asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>
<div><%= Html.Action("View1"); %></div>
</asp:Content>

您获得特定错误的原因是proba变量未在视图中定义,也不需要。在您的情况下,操作确定传递给局部视图的模型,因此不需要传递任何数据。在渲染动作时,无论如何都只能通过查询参数传递它。

答案 1 :(得分:1)

在您的视图页面中,您可能希望使用RenderPartial方法。

实施例

假设我有3个部分视图称为“View1”,“View2”和“View3”。如果我想渲染所有这三个视图来构成我的视图内容,那么我会做类似的事情:

<div id="section1">
<% Html.RenderPartial("View1", Model.Table1) %>
</div>
<div id="section2">
<% Html.RenderPartial("View2", Model.Table2) %>
</div>
<div id="section3">
<% Html.RenderPartial("View3", Model.Table3) %>
</div>

我假设你有一个MasterPage,你的视图来自于它,以便处理其他必要的标记。以上内容只会放在派生视图的Content部分内。