Asp.net-Mvc
如何在 ASP.NET MVC 局部視圖中使用匿名列表作為模型?
我有一個
Contact對象列表,我只想要一個屬性子集。所以我使用 LINQ 投影來創建一個匿名列表,並將它傳遞給一個局部視圖。但是當我在局部視圖中使用該列表時,編譯器說它沒有這些屬性。我嘗試了以下最簡單的情況,但我仍然沒有機會在局部視圖中使用匿名對像或列表。var model = new { FirstName = "Saeed", LastName = "Neamati" }; return PartialView(model);在局部視圖中,我有:
<h1>Your name is @Model.FirstName @Model.LastName<h1>但它說 @Model 沒有 FirstName 和 LastName 屬性。這裡有什麼問題?當我使用@Model 時,這個字元串會在瀏覽器中呈現:
{ Title = "Saeed" }
不要這樣做。不要將匿名對像傳遞給您的視圖。它們的屬性是內部的,在其他程序集中不可見。視圖由 ASP.NET 執行時動態編譯成單獨的動態程序集。因此,定義視圖模型並強烈鍵入您的視圖。像這樣:
public class PersonViewModel { public string FirstName { get; set; } public string LastName { get; set; } }進而:
var model = new PersonViewModel { FirstName = "Saeed", LastName = "Neamati" }; return PartialView(model);在您看來:
@model PersonViewModel <h1>Your name is @Model.FirstName @Model.LastName<h1>