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屬性創建模型並創建驗證屬性?建議?