2012-08-22 66 views
3

引用隱式類型的模式,我正在學習MVC和我想爲我的模型創建一個隱式類型變量,但不知道如何引用它在視圖@model IEnumerable<???>如何鑑於

控制器...

public ActionResult Users() { 
    var model = from MembershipUser u in Membership.GetAllUsers() 
       select new {user = u, roles = string.Join(", ", Roles.GetRolesForUser(u.UserName))}; 

    View(model); 
} 

回答

1

這是您返回的匿名類型。我相信你會想使用一個實際的類型。如果你沒有一個用於你在查詢中選擇的內容,則需要創建一個。

一旦你有了你的類型,這裏有一個在視圖中使用它的例子。

這是在我看來,第一行:

@model IEnumerable<AutoTrackerCommon.Entities.TrackerJob> 

而且我用它在的WebGrid:

@{ 
    var grid = new @WebGrid(
     source: Model, 
     rowsPerPage: 10); 
} 
3

不能引用匿名類型的變量視圖(或者在本地範圍之外的任何地方)。它可以使用動態類型:

@model IEnumerable<dynamic> 

不過這樣一來你沒有智能感知/編譯時類型檢查;最好的辦法是爲你的模型創建一個類。

1

您將其作爲Model來引用,但爲什麼要做這樣的事情? 使用ViewModels,不要使用無類型或隱式類型的模型。這是一個噩夢:你從IDE支持到自動驗證都失去了一切。不要不必要地使你的生活複雜化。視圖模型(或強類型視圖)是要走的路。

好文章閱讀關於:View Models in ASP.NET MVC

希望這對你有所幫助&祝你好運