asp.net mvc2 - два (или более) представления, использующих один и тот же контроллер? - PullRequest
0 голосов
/ 08 июня 2010

Возможно ли, что два разных вида используют один и тот же контроллер? У меня очень сложный контроллер, который отображает некоторые данные. Теперь мне нужно отобразить эти данные (которые получаются с помощью ajax) в двух частичных представлениях, потому что я хочу разместить их в разных позициях макета.

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

функции 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>

Icon:

<%@ 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>

Будет ли это работать?

0 голосов
/ 10 июня 2010

Насколько я понимаю, вы хотите, чтобы одно действие контроллера вернуло два представления. Мне почему-то кажется, что это невозможно.

Вы упомянули, что представления используются для отображения идентичных данных разными способами. Мое предложение было бы вернуть JsonResult из действия контроллера и построить клиентскую часть представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...