根据MSDN文档,默认情况下FileExtensionsAttribute(.NET 4.5)应该只允许我上传jpg,jpeg,gif和png文件 - 这就是我想要的.
我尝试上传没有属性的jpg,它可以工作.大.然后我将属性添加到我的视图模型中..
[FileExtensions(ErrorMessage = "Please specify a valid image file (.jpg, .jpeg, .gif or .png)")]
public HttpPostedFileBase ImageFile { get; set; }
Run Code Online (Sandbox Code Playgroud)
没有快乐.验证失败,并显示ErrorMessage.最重要的是,似乎没有办法指定任何允许的自定义文件扩展名.我最终扩展了FileExtensionsAttribute并使用我自己的验证逻辑,它按预期工作.但为什么这种方式不起作用?
如果需要,将发布整个控制器并查看.我使用此示例作为上载逻辑的基础,但使用DataAnnotations.FileExtensionsAttribute而不是Microsoft.Web.Mvc.FileExtensions .. 如何在ASP.NET MVC中上载图像?
我需要上传一个csv文件,我想将它的扩展名限制为.csv
所以我将follow属性添加到我的ViewModel:
[FileExtensions(ErrorMessage = "Must choose .csv file.",Extensions = "csv,txt")]
public HttpPostedFileBase File { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我看来,我有以下几点:
@Html.TextBoxFor(m => m.File, new { type = "file"})
@Html.ValidationMessageFor(m => m.File)
Run Code Online (Sandbox Code Playgroud)
但是,只要它命中我的"ModelState.IsValid"检查它就会返回invalid,并显示错误消息"Must choose .csv file".
我假设我只是错过了一个参数,但我还没有找到任何已经使用的样本.