0

拡張するクラスがPartialViewResultあり、このクラスでは と をResponse.StatusCode介してモデルを設定していViewDataます。

モデルとステータスコードは期待どおりに設定されていますが、モデルは検証されていません。私のモデルが検証されていることを確認するために、追加の手順が必要ですか? パイプラインの間違った場所に (遅すぎるように) フックしたように感じます。結果に渡す前にモデルを検証する必要がありますが、100% ではありません。

クラスは次のとおりです。

public class PartialViewResultWithErrorCode<T> : PartialViewResult where T : class
{
    private readonly HttpStatusCode statusCode;
    private readonly T model;

    public PartialViewResultWithErrorCode(HttpStatusCode statusCode, string viewName, T model)
    {
        this.statusCode = statusCode;
        this.model = model;
        ViewName = viewName;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.StatusCode = (int)statusCode;
        ViewData = new ViewDataDictionary(model);
        base.ExecuteResult(context);
    }
}

どんな考えでも大歓迎です。

4

1 に答える 1

0

おそらく手遅れです。PartialViewResult は、InvokeActionResultWithFilters 中に実行されます。

その前に ModelValidation が発生しています。ActionFilter を作成し、OnActionExecuting で同じことを達成しようとすると、より良い結果が得られます。

于 2013-10-13T11:30:30.443 に答える