如何使用Razor国际化DropDownList项目
问题描述:
我们正在研究MVC网站,其中一些列表具有用户和系统值。因此,系统项目需要国际化以用户语言显示,并且用户项目已经以用户语言显示。如何使用Razor国际化DropDownList项目
这些系统项目有一个名为“IsSystem
”的标志,用于区分我们需要国际化的标志。此标志还意味着用户无法更新或删除这些项目。
好了,我们正在使用@Html.DropDownList
呈现此DropDownList的......所以我不觉得如何介入下拉列表加载逻辑的中间...为了放置if
语句检查的IsSystem
标志和获取来自资源文件的正确文本。
感谢如何处理这个任何想法...
编辑:
控制器代码:
ViewBag.idTaskType = new SelectList(db.TaskTypes, "idTaskType", "Name");
其中db
是的EntityFramework
查看代码:
@Html.DropDownList("idTaskType", String.Empty)
答
我想象你的 “TaskTypes” 表如下
idTaskType Name
---------- -----
1 Task1
2 Task2
3 Task3
让我们考虑两种不同的 “App_GlobalResources文件”
[1]恩美国
Name Value
---- -----
Task1 Create
Task2 Update
Task3 Delete
[1] SV
Name Value
---- -----
Task1 Skapa
Task2 Uppdatera
Task3 Ta bort
现在开发的IEnumerable SelectListItem
public IEnumerable<SelectListItem> TaskTypeList {
get{
List<TaskTypes> List = db.TaskTypes.ToList();
return List.Distinct().OrderBy(x => x.Name).Select(x => new SelectListItem
{
Value = x.idTaskType.ToString(),
Text = (HttpContext.GetGlobalResourceObject("Task", x.Name)).ToString()
});
}
}
最后使用
@Html.DropDownList("idTaskType", new SelectList(Model.TaskTypeList, "Value", "Text"), String.Empty)
感谢。
答
您将需要已经国际化数据的版本。所以,你可以做这样的事情:
ViewBag.idTaskType = new SelectList(db.TaskTypes
.Where(x => x.language == "en"), "idTaskType", "Name");
请将代码填入您的DropDownList数据中。 – Marc