функции 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>
Будет ли это работать?