我开始这样做是为了在我的视图中显示一些复选框:
@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
方法,它用于将文本翻译成其他语言。
这行得通。我有一个简单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
功能,因为这样我就可以轻松地在我的应用程序中翻译内容。否则,做任何其他事情都会对我造成伤害。
我可能应该做什么的任何例子?谢谢。