Для моих проектов 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;
}
Полный код можно посмотреть по ссылке ниже:
https://bitbucket.org/tugberk/tugberkug.mvc/src/6cc3d3d64721/TugberkUg.MVC/Validation/ServerSideRemoteAttribute.cs
Для переменной fullUrl
я пытаюсь добавить имя свойства в строку запроса, но когда я использую validationContext.MemberName
, у меня не получается. Я решил проблему с помощью временного исправления, сделав его статическим как «термин», но это вовсе не исправление.
Итак, как получить имя свойства из validationContext
?