两个不同的视图是否可能使用同一个控制器? 我有非常复杂的控制器,显示一些数据。现在我需要在两个局部视图中显示这些数据(使用ajax检索),因为我想将它们放在布局中的不同位置。
答案 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
并构建视图客户端。