的文字,我開始這樣做是爲了顯示我的觀點有些複選框:試圖用@ Html.CheckBox攜手合作,以顯示枚舉
@Html.LabelFor(m => m.MyEnum, T("Pick Your Poison"))
<div>
@for(int i = 0; i < Model.Alcohol.Count; i++)
{
<label>
@T(Model.Alcohol[i].Text)
@Html.CheckBoxFor(m => Model.Alcohol[i].Selected)
@Html.HiddenFor(m => Model.Alcohol[i].Value)
</label>
}
</div>
請注意:這裏最重要的是@T
方法,這是用於處理文本翻譯成其他語言。
This Works。我有一個簡單的enum
,後端的一些方法將它變成視圖中的文本。所以,一個enum
如:
public enum MyEnum
{
Beer = 1,
Vodka = 2,
Rum = 3
}
將顯示與3個選擇複選框的列表。在我的ViewModel中,我這樣做:
Alcohol= Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>().Select(x =>
{
return new SelectListItem {
Text = x.ToString().ToUpper(), Value = ((int)x).ToString()
};
}).ToList();
}
但是,我希望有更多的描述性文本伴隨複選框。我寧願enum
有這樣或一些類似類型的系統(我將解釋下劃線):
public enum MyEnum
{
I_like_Beer = 1,
I_hate_Vodka = 2,
Meh__Rum = 3
}
我試圖創建一個方法剝離出強調,並用空格代替它,在雙下劃線的情況下用逗號代替它,因此當複選框顯示他們會是什麼樣子:
我喜歡啤酒
我恨伏特加
咩,朗姆酒
但我不知道怎麼樣。另外,我不確定這是否是最好的選擇。我很想保留@T
函數,因爲那樣我就可以在我的應用程序中輕鬆翻譯。否則,做任何事情都會爲我殺死那些東西。
任何我可能應該做的事情的例子?謝謝。
我在哪裏可以將最後一段代碼放在控制器中?另外,它是否適合我的'@ T'構造? – REMESQ
+1描述屬性和refelction –
@REMESQ是的,你的例子中的'x'是枚舉值,對吧?所以它會是'x.GetDescription()'或其他。它應該與T構造一起工作,因爲'T'只需要一個字符串參數:'T(x.GetDescription()'。 – McGarnagle