Asp.net-Mvc-4

無法讓 MVC 4 FileExtensions 屬性在 ViewModel 屬性上工作

  • March 2, 2017

我需要上傳一個 csv 文件,並且我想將它的副檔名限制為 .csv

所以我在我的 ViewModel 中添加了以下屬性:

[FileExtensions(ErrorMessage = "Must choose .csv file.",Extensions = "csv,txt")]
public HttpPostedFileBase File { get; set; }

在我看來,我有以下幾點:

@Html.TextBoxFor(m => m.File, new { type = "file"})
@Html.ValidationMessageFor(m => m.File)

但是,一旦它點擊我的“ModelState.IsValid”檢查,它就會返回無效,並顯示我的錯誤消息“必須選擇 .csv 文件”。

我假設我只是缺少一個參數,但我還沒有在任何地方找到這個使用的樣本。

問題是 FileExtensionsAttribute 僅適用於字元串變數。檢查 HttpPostedFileBase 變數的文件副檔名的最簡單方法是使用這個簡單的屬性。它解決了我的問題。

唯一的缺點是這個新屬性只在伺服器端驗證,所以不要忘記檢查模型狀態:

if (ModelState.IsValid)
{
 // Do the work
}

引用自:https://stackoverflow.com/questions/14718425