如何创建由三个局部视图页面组成的视图页面?我正在使用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>
为什么此代码返回错误:对象引用未设置为对象的实例。
答案 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
部分内。