自定义验证:从validationContext获取属性名称
对于我的 ASP.NET MVC 项目,我创建了一个自定义验证属性。这是我正在努力解决的代码:
protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
//Here I need to resolve the url in order to make a call to that controller action and get the JSON result back
var httpContext = new HttpContextWrapper(HttpContext.Current);
var urlHelper = new UrlHelper(
new System.Web.Routing.RequestContext(
httpContext, new System.Web.Routing.RouteData()
)
);
var url = urlHelper.Action(Action, Controller, null,
urlHelper.RequestContext.HttpContext.Request.Url.Scheme);
var fullUrl = string.Format("{0}?{1}={2}", url,
/*validationContext.MemberName*/"term", value);
if (!GetResult(fullUrl)) {
var message = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(message);
}
return null;
}
您可以从下面的链接看到完整的代码:
对于 fullUrl
变量,我我正在尝试将属性名称附加到查询字符串,但是当我使用 validationContext.MemberName
时,我失败。我通过将其静态化为“术语”来解决临时修复的问题,但这根本不是修复。
那么,从 validationContext
中检索属性名称的方法是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
validationContext.DisplayName 可以解决问题吗?
然后您可以思考是否可以获取 MemberName
?
Does validationContext.DisplayName do the trick?
You could then reflect to get the MemberName
Possibly?