2011-08-24 55 views
1

我見過很多使用匿名類型將數據傳遞給視圖的示例。不過,我似乎錯過了一些關鍵信息。請看下面的人爲的例子:MVC2中部分視圖中的匿名類型的模型

public class BlogController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Title(object args) 
    { 
     return View(args); 
    } 

} 

Index.aspx的要求

<%= Html.Action("Title", new { Name = "Jake" }) %> 

而且title.ascx很簡單:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %> 
<h3><%= Model.Name %>'s Blog</h3> 

導航到有問題的行動會導致運行時異常:

'object' does not contain a definition for 'Name' 

我意識到還有其他方法可以做到這一點。我可以使我的視圖強類型或將數據推送到ViewData對象。在這種特殊情況下,我希望能夠傳遞任何具有Name屬性並綁定到名稱的對象。有什麼我失蹤?

回答

4

參數args的類型爲object。當您將路由值傳遞給Html.Action時,實際上最後會出現string參數Name,這當然不會綁定到參數args

你的電話更改爲:

<%= Html.Action("Title", new { args = new { Name = "Jake" } }) %>