検証されるプロパティを持つ抽象モデルがあります。コントローラーパラメーターに現在のコントローラーを設定したいので、リモート属性から継承するカスタム属性を追加しました。問題は、モデルのバインド時に属性の検証が 1 回適用されることです。
[SimpleListRemoteValidation("ValidateName", HttpMethod = "POST", AdditionalFields = "Id,SimpleModelType")]
public string Name { get; set; }
SimpleListRemoteValidation は Remote 属性から継承されます
public class SimpleListRemoteValidationAttribute:System.Web.Mvc.RemoteAttribute
{
public SimpleListRemoteValidationAttribute(string action)
: base(action, HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString())
{
}
}
モデルバインドあり
@foreach (var p in Model.GetProperties())
{
<td>
@Html.Editor(p.Name)
@Html.ValidationMessage(p.Name)
</td>
}
最初のリクエストで、属性のコンストラクターを入れます。別のコントローラーに行くと、それは起こりません。