2010-07-20 34 views
0

我有一個處理文件上傳的控制器。最終,我希望能夠創建屬性來裝飾我的控制器操作,如[HttpPostedFileType("zip")]或類似的東西。如何使MVC AttributeFilter驗證張貼的文件擴展名

當前我創建了此動作中使用的擴展方法。

public static string GetFileExtension(this HttpPostedFileBase file) 
    { 
     if (!file.FileName.Contains('.')) 
      throw new FormatException("filename does not contain extension"); 

     return file.FileName.Split(".".ToCharArray()).Last(); 
    } 

行動簽名

[HttpPost] 
    public ActionResult Shapefile(HttpPostedFileBase file) 
    { 
     file.GetFileExtension() 
     ... 
    } 

我開始創建一個HttpPostedFileTypeAttribute和想我會重寫OnActionExecuting方法和呼叫分機。在這種情況下,通過發佈文件,我可以獲得Http請求並遍歷文件,但是使用mvc的模型綁定具有HttpPostedFileBase或枚舉這些文件比獲取文件的asp 1.x方法更清晰。

我的問題是,我可以獲取執行動作時屬性中的參數,還是因爲生命週期尚未達到動作方法而尚未綁定參數?我應該使用HttpPostedFileBase屬性創建模型並創建驗證屬性?建議?

回答

0

filterContext有一個ActionParameters字典。我可以使用它。

相關問題