asp.net mvc2 - 使用相同控制器的两个(或更多)视图?

时间:2010-06-08 07:33:51

标签: asp.net-mvc-2 controller views

两个不同的视图是否可能使用同一个控制器? 我有非常复杂的控制器,显示一些数据。现在我需要在两个局部视图中显示这些数据(使用ajax检索),因为我想将它们放在布局中的不同位置。

2 个答案:

答案 0 :(得分:2)

View()函数可以传递参数,例如:

return View(); // The view with the same name as the action.
return View("MyView") // The view named "MyView"

还有一些超载。这符合账单吗?

如果没有,为什么不给出部分视图,例如,给出这个模型:

public class BlogItem
{
    public string Title { get; set; }
    public int Id { get; set; }
}

这个动作:

public ActionResult Index()
{
    var items = new List<BlogItem>
                {
                    new BlogItem { Title = "Test Blog Item", Id = 1 }
                };
    return View(items);
}

这个观点:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<BlogItem>>" %>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
    <% Html.RenderPartial("List", Model); %>

    <% Html.RenderPartial("Icon", Model); %>
</asp:Content>

我可以使用相同的模型有两个部分视图:

列表:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<BlogItem>" %>
<ul>
    <% foreach (var item in Model) { %>
        <li><%= item.Title %></li>
    <% } %>
</ul>

图标:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<BlogItem>" %>
<div>
    <% foreach (var item in Model) { %>
        <div class="icon"><img src="..." /></div>
        <div class="text"><%= item.Title %></div>
    <% } %>
</div>

那会有用吗?

答案 1 :(得分:0)

根据我目前的理解,您希望一个控制器操作返回两个视图。我不知何故认为这是不可能的。

您已经提到过视图用于以不同的方式显示相同的数据。我的建议是从控制器操作返回JsonResult并构建视图客户端。