私の 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
ですか?