数据库旨在将翻译的字段存储在相同的表中
Gender[ID,name,arabicname] Person[ID,Firstname,Fathername,Familyname,arabicFirstname,arabicFathername,arabicFamilyname,GenderID]
我设法通过使用以下方式在name和arabicname字段之间切换来显示基于资源的所有下拉列表:
VIEwBag.Gender= new SelectList(mEntitIEs.Genders.ToList(),"ID",Resources.Global.name); // name value in the Global.resx is name and in Global.ar.resx is arabicname
并通过使用以下方式显示LabelFor:
[display(name="Firstname",ResourceType =typeof(Resources.Global))]public string Firstname{get;set;}
我的问题是,是否可以使用displayFor在Firstname值和arabicFirstname之间切换以及如何在MVC中实现这一点?
例如显示:Firstname = Antony for english,arabicFirstname =انطوانfor arabic
解决方法 我做了以下解决方法来使事情有效>为了区分资源文件中的标签和数据值,我使用了对流:
Firstname代表标签,FirstnameResource代表数据
示例资源文件将是:
Firstname => value = First name (for english),الاسم الاول (for arabic) FirstnameResource = > value = Firstname ( for english),arabicFirstname (for arabic)
>我编写了以下HTMLHelper
public static MvcHTMLString displayResourceFor<TModel,TValue>(this HTMLHelper<TModel> helper,Expression<Func<TModel,TValue>> Expression){ var rm = new ResourceManager("Resources.Global",System.Reflection.Assembly.Load("App_GlobalResources")); var resource = rm.GetString(string.Format("{0}Resource",ExpressionHelper.GetExpressionText(Expression))); var value = helper.VIEwContext.VIEwData.GetVIEwDataInfo(resource).Value.ToString(); return MvcHTMLString.Create(value);}
>您可以使用此扩展程序如下:
@ HTML.displayResourceFor(M => m.Firstname)
这种解决方法帮助我解决了这个问题,但也许有另一个直接的解决方案.
总结以上是内存溢出为你收集整理的c# – DisplayName和DisplayFor的MVC全球化全部内容,希望文章能够帮你解决c# – DisplayName和DisplayFor的MVC全球化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)