我想爲我的ASP.NET MVC3網站編寫一個幫助器,它將能夠返回一個新的SelectList
,其中包含一個枚舉的所有Description
屬性標記在ASP.NET MVC3中使用顯示標記填充DropDownListFor
例如,具有以下枚舉:
public enum Test
{
[Display(Name = "Membre 1")]
Member1,
[Display(Name = "Membre 2")]
Member2
}
我希望能夠填補DropDownListFor
的東西,如:
@Html.DropDownListFor(m => m.MyTest, MyHelper(Test))
(與MyTest
是Test
變量)。
,我希望我的DropDownList
包含:
我用這個工作助手:
public static string GetEnumDescription(this Enum value)
{
Type enumType = value.GetType();
var enumValue = Enum.GetName(enumType, value);
MemberInfo member = enumType.GetMember(enumValue)[0];
var attrs = member.GetCustomAttributes(typeof(DisplayAttribute), false);
var outString = ((DisplayAttribute)attrs[0]).Name;
if (((DisplayAttribute)attrs[0]).ResourceType != null)
{
outString = ((DisplayAttribute)attrs[0]).GetName();
}
return outString;
}
...但我不能讓它工作在SelectList
我該如何修改thi s直接「合併」它直接在我的@Html.DropDownListFor
幫手?
我在互聯網上看到過一些幫手,特別是here或here,但沒有人爲我工作。有沒有人能夠共享一個短和優雅幫手,它返回一個枚舉成員的所有Display
屬性,以便將它們放在一個DropDownListFor
?
我只是嘗試你的答案,因爲它是第一個。我在Tools \ Helpers \ AttributesHelperExtensions.cs中創建了兩個方法,這是一個靜態類,我寫了一些幫助器。在我看來,'ToSelectList()'不能識別...有沒有使用或我忘記的其他東西? – AlexB
對不起。您還需要在視圖頂部指向擴展名的「@ using」指令。就像在C#代碼中的其他任何地方一樣,您必須讓編譯器知道在哪裏找到該方法。 –