2010-06-01 123 views
0

也許這個問題很簡單,因爲我是MVC2的新手。我有一個簡單的演示MVC項目。在不同的(部分)視圖中使用相同的代碼

(1)一種弱類型的視圖:Index.aspx的

<% Html.RenderPartial("ArticalList", ViewData["AllArticals"] as List<Artical>); %> 

(2)一種強類型的局部視圖:ArticalList.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<Artical>>" %> 
<% foreach (Artical a in Model) { %> 
      <%= Html.ActionLink(a.Title, "About", new { id = a.ID })%><br /> 
<%} %> 

(3)這裏是HomeController的的.cs

public ActionResult Index() 
    { 
     ViewData["AllArticals"] = Artical.GetArticals(); 
     return View(); 
    } 

public ActionResult ArticalList() 
{ 
    return PartialView(Artical.GetArticals()); 
} 

對不起,我在使用Web表格「角」,因爲如果我使用一個Web表格,當我訪問的Index.aspx,渲染ArticalLi st.ascx將調用公共ActionResult ArticalList()。但在這裏我需要兩次寫作Artical.GetArticals()兩次。我怎麼能把它們放在一個?

回答

1

從我所瞭解的情況來看,作爲MVC中最近的新手也是,局部視圖不在控制器中使用動作方法。 "ArticalList"僅是對部分視圖文件的引用,並且不會爲操作方法發出另一個請求。局部視圖從調用它的視圖中獲取所有數據。

Html.RenderAction可能是您感到困惑的行爲。

+0

太棒了!這就是我想要的!謝謝! – 2010-06-01 08:11:22

相關問題