首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Westwind.Globalization框架w/ Account.cs ASP.NET MVC

Westwind.Globalization框架w/ Account.cs ASP.NET MVC
EN

Stack Overflow用户
提问于 2015-01-16 20:55:13
回答 2查看 1.7K关注 0票数 0

我很难在Account.CS文件中声明一个资源。这是我的密码:

代码语言:javascript
复制
    [Required(ErrorMessageResourceName= typeof @DbRes.T("Account", "EmailAddress")]
    [Required(ErrorMessageResourceName = (@DbRes.T("EmailAddress", "Account")))]
    [DataType(DataType.EmailAddress)]
    [Display(Name = DbRes.T("EmailAddress", "Account"))]
    public string EmailAddress { get; set; }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-16 05:58:36

您肯定可以在MVC和验证属性上使用Westwind.Globalization。MVC验证依赖于强类型资源和类型映射,因此为了使它能够工作,您已经从dbResource文件导出了强类型的资源。。这将为db资源中的每个ResourceSet创建一个自定义强类型类。

强类型资源类如下所示:

代码语言:javascript
复制
public class Resources
{
    public static System.String NameIsRequired
    {
        get
        {
            if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.AspNetResourceProvider)
                return (System.String) HttpContext.GetGlobalResourceObject("Resources","NameIsRequired");
            if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.Resx)
                return ResourceManager.GetString("NameIsRequired");

            return DbRes.T("NameIsRequired","Resources");
        }
    }


    public static System.String AddressIsRequired
    {
        get
        {
            if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.AspNetResourceProvider)
                return (System.String) HttpContext.GetGlobalResourceObject("Resources","AddressIsRequired");
            if (GeneratedResourceSettings.ResourceAccessMode == ResourceAccessMode.Resx)
                return ResourceManager.GetString("AddressIsRequired");

            return DbRes.T("AddressIsRequired","Resources");
        }
    }

    ... any others in the same resource set
}

这与标准的.Resx强类型类非常相似,只是可以使用相同的类(DbRes ResourceManager、dbRes ASP.NET ResourceProvider或平原Resx )访问各种不同类型的资源。

然后,您可以以在ASP.NET MVC模型验证属性中引用标准Resx强类型资源的方式引用强类型资源:

代码语言:javascript
复制
public class ViewModelWithLocalizedAttributes
{
    [Required(ErrorMessageResourceName = "NameIsRequired", ErrorMessageResourceType = typeof(Resources))]
    public string Name { get; set; }

    [Required(ErrorMessageResourceName = "AddressIsRequired", ErrorMessageResourceType = typeof(Resources))]
    public string Address { get; set; }
}

示例项目中有一个示例--打开Models文件夹,查看使用该视图进行本地化值的模型视图和ModelAttributesFromResources.cshtml视图。

wiki上有一个主题也描述了这一点:

https://github.com/RickStrahl/Westwind.Globalization/wiki/Model-Validation-Message-for-ASP.NET-and-EntityFramework

票数 3
EN

Stack Overflow用户

发布于 2015-01-26 14:26:15

西风文档: Westwind.Globalization ASP.NET MVC支持说:

MVC应用程序最好不要使用App_LocalResources和App_GlobalResources的App_LocalResources资源体系结构。因为MVC不使用控件,基于Web窗体的提供者系统提供的任何声明性标记的任何控件查找好处都在MVC应用程序中丢失。相反,MVC应用程序倾向于最好地处理定义在.NET项目中并公开为强类型资源的传统资源。

因此,西风似乎没有解决方案,只是使RESX-文件编辑可能更容易。

//:参见Ricks注释:...You可以从db资源生成强类型资源,然后以同样的方式使用这些资源。..。在维基上有一个单独的主题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27992594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档