2012-02-06 46 views
2

我有一個Person類:獲取類型T的屬性名稱中的IEnumerable實例<T>

public class Person { 

public long Id { get; set; } 
public string LastName { get; set; } 
public string FirstName { get; set; } 
public string PhoneNo { get; set; } 
public string FaxNo { get; set; } 
public int Age { get; set; } 
public DateTime BirthDate { get; set; } 

} 

而且人們實例是這樣的:

IEnumerable<Person> people = new List<Person>() { /* Define people */ } 

所以我需要得到的屬性名稱人使用人,當然我可以使用這個:

string fr = people.FirstOrDefault().FirstName; 

那麼情況如何呢people還沒有Person的任何實例嗎? 我知道,當我們沒有任何Person,所以我們沒有任何FirstName但我需要訪問它在ASP.NET MVC的列表視圖我想用這樣的:

@Html.DisplayFor(model => model.LastName) 

沒有任何一個有任何想法?

回答

3

如果people爲空,則FirstOrDefault()將返回null,因此您將獲得空引用異常。

目前尚不清楚你什麼在這裏發生,但如果你只是想null你可以使用:

string fr = people.Select(p => p.FirstName).FirstOrDefault(); 

這將做投影第一 - 所以FirstOrDefault()只會如果返回null有不是人,或者是第一人的名字。

+0

好,在編輯或我們使用@Html.LabelFor(model => model.FirstName)來顯示屬性名稱,在這種方法中,我們可以將DisplayName屬性顯示爲屬性名稱,但在List View中我們有一個IEnumerable類型所以我們不能使用這種方法,並且使用Display或D有趣列表視圖中的isplayName屬性。 – Saeid 2012-02-06 11:30:04

+0

@Saeid:對不起,我真的不清楚你想要做什麼,或者這與一個空集合有什麼關係...... – 2012-02-06 11:31:17

+0

正如我所說我只是想在列表視圖中更改屬性名稱的顯示的MVC,也許(並非總是)傳遞給視圖的集合是空的。但感謝回答 – Saeid 2012-02-06 11:36:09

0

這不是一個完整的答案,但我希望能有所幫助,您可以定義一個空Person實例,並使用類似如下:

@model IEnumerable<YourNameSpace.Models.Person> 
@{ 
ViewBag.Title = "Index"; 
YourNameSpace.Models.Person p = new YourNameSpace.Models.Person(); 
} 

和:

@Html.LabelFor(x => p.FirstName) 
相關問題