Asp.net-Mvc

如何在 ASP.NET MVC 局部視圖中使用匿名列表作為模型?

  • November 8, 2013

我有一個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>

引用自:https://stackoverflow.com/questions/6559000