ASP.Net MVC 模型 ErrorMessage 属性中的全局资源
Global Resources in ASP.Net MVC Model ErrorMessage Attribute
我正在 ASP.Net MVC 5 中创建 Web 应用程序。
我需要添加用户定义的语言。 (所以,它可以用任何语言工作)。
我在资源文件中添加了英文text/messages。
而对于其他语言,资源将在 App_GlobalResources 文件夹中生成 运行 次。
使用此自定义资源,我可以根据所选语言显示标签(、按钮等)。
但是,我对 ErrorMessage 有疑问,它作为模型属性中的属性给出。
模型 classes 在 class 库中,class 库项目的引用已添加到 MVC 中。
因此,无法访问 App_GlobalResources 文件夹中的资源。
并且,如果我在模型 class 的项目下添加资源,我可以使用以下代码提供自定义消息。
[Required(ErrorMessage = "*")]
[System.Web.Mvc.Compare("Password", ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "PasswordCompare")]
public string ConfirmPassword { get; set; }
但是,使用此代码,我无法使用 App_GlobalResources。
在这种情况下有什么解决方案?
最后,我得到了解决方案:
已创建自定义属性 class。
[Required(ErrorMessage = "*")]
[CompareCustomAttribute("Password", ClassKey = "Resources", ResourceKey = "PasswordCompare")]
public string ConfirmPassword { get; set; }
自定义属性 class 正在继承 CompareAttribute class。
public sealed class CompareCustomAttribute : System.Web.Mvc.CompareAttribute
{
public CompareCustomAttribute(string otherProperty)
: base(otherProperty)
{
}
public string ResourceKey { get; set; }
public string ClassKey { get; set; }
public override string FormatErrorMessage(string name)
{
return Convert.ToString(HttpContext.GetGlobalResourceObject(this.ClassKey, this.ResourceKey));
}
}
在覆盖的 FormatErrorMessage 方法中,我放入了代码以从全局资源获取自定义错误消息。
我正在 ASP.Net MVC 5 中创建 Web 应用程序。
我需要添加用户定义的语言。 (所以,它可以用任何语言工作)。
我在资源文件中添加了英文text/messages。
而对于其他语言,资源将在 App_GlobalResources 文件夹中生成 运行 次。
使用此自定义资源,我可以根据所选语言显示标签(、按钮等)。
但是,我对 ErrorMessage 有疑问,它作为模型属性中的属性给出。
模型 classes 在 class 库中,class 库项目的引用已添加到 MVC 中。
因此,无法访问 App_GlobalResources 文件夹中的资源。
并且,如果我在模型 class 的项目下添加资源,我可以使用以下代码提供自定义消息。
[Required(ErrorMessage = "*")]
[System.Web.Mvc.Compare("Password", ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "PasswordCompare")]
public string ConfirmPassword { get; set; }
但是,使用此代码,我无法使用 App_GlobalResources。
在这种情况下有什么解决方案?
最后,我得到了解决方案:
已创建自定义属性 class。
[Required(ErrorMessage = "*")]
[CompareCustomAttribute("Password", ClassKey = "Resources", ResourceKey = "PasswordCompare")]
public string ConfirmPassword { get; set; }
自定义属性 class 正在继承 CompareAttribute class。
public sealed class CompareCustomAttribute : System.Web.Mvc.CompareAttribute
{
public CompareCustomAttribute(string otherProperty)
: base(otherProperty)
{
}
public string ResourceKey { get; set; }
public string ClassKey { get; set; }
public override string FormatErrorMessage(string name)
{
return Convert.ToString(HttpContext.GetGlobalResourceObject(this.ClassKey, this.ResourceKey));
}
}
在覆盖的 FormatErrorMessage 方法中,我放入了代码以从全局资源获取自定义错误消息。