我已经按照这篇文章进行了通过测试,显示了当调用 Validator.IsValid(someEntity) 失败时从资源文件返回的自定义验证错误消息。
我试图将其转换为本文描述的 MVC3 中新的不显眼的客户端验证。这也或多或少有效 - 客户端验证确实如此,所以我可以假设我的 NHValidators 接线是好的,你可以看到以下是输出:
<input data-val="true" data-val-required="{NotNullNotEmpty}" id="Username" name="Username" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Username" data-valmsg-replace="true">
我的问题是这次 CustomMessageInterpolator 没有触发 - 资源字符串没有被翻译为这个属性(它仍然在花括号中):{NotNullNotEmpty}。
我的测试和网络都使用相同的 NHValidator 配置:
var cfg = new FluentConfiguration();
cfg
.SetMessageInterpolator<CustomMessageInterpolator>()
.SetCustomResourceManager("MyProject.Core.Resources.ValidationMessages", Assembly.Load("MyProject.Core"))
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("MyProject.Core").ValidationDefinitions())
只是为了更好地衡量这里的模型片段:
public class LoginModel
{
[NotNullNotEmpty(Message = "{NotNullNotEmpty}")]
public string Username { get; set; }
我知道远射,但任何想法将不胜感激!