2010-06-08 58 views

回答

2

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

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> 

将这项工作?

+0

我不能在控制器中同时返回两次吗? – 2010-06-08 07:45:34

+0

@ile:不,但您可以在每个操作方法中使用条件逻辑并相应地选择您的视图。或者使用通用视图并将其传递给一些模板以进行解析(虽然这有点高级)。 – Simon 2010-06-08 07:56:32

+0

什么条件逻辑?我需要控制器在同一时间将数据传递给两个视图。这是不可能的? – 2010-06-08 08:06:43

0

根据我目前为止的理解,您希望一个控制器操作返回两个视图。我以某种方式认为这是不可能的。

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

+0

oops - 根据您的评论,我现在已经正确阅读,您可能会这样做。 – Ahmad 2010-06-10 08:47:05

相关问题