2010-06-08 57 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

相關問題