2013-10-13 119 views
0

我有一門課程,延伸PartialViewResult,在這門課我通過ViewData設置Response.StatusCode和模型。擴展PartialViewResult,模型​​未驗證?

我的模型和狀態碼正在按照我的預期設置,但我的模型未經驗證。他們需要額外的步驟來確保我的模型得到驗證嗎?這感覺就像我已經掛在管道中錯誤的地方(太晚了),模型應該在驗證通過之前已經被驗證,但我不是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); 
    } 
} 

任何想法不勝感激。

回答

0

這可能太晚了。 PartialViewResult在InvokeActionResultWithFilters期間執行。

ModelValidation在此之前發生過。你可以創建一個ActionFilter,並嘗試在OnActionExecuting中實現同樣的事情會給你一個更好的結果。

+0

我懷疑驗證早於結果,我會看看過濾器選項,感謝您的反饋。 – dougajmcdonald