我想检查表单中上传的文件,以验证它是 CSV 文件还是 TXT 文件。
我创建了一个自定义属性,如下所示:
public class ValidateUploadAttribute : RequiredAttribute
{
public override bool IsValid(object value)
{
var file = value as HttpPostedFileBase;
if (file == null)
{
return false;
}
if (file.ContentType != "text\\CSV" || file.ContentType != "text\\TXT")
{
return false;
}
return true;
}
}
然后创建了一个看起来像这样的视图模型
[ValidateUploadAttribute(ErrorMessage = "Please select a TXT or CSV file")]
public HttpPostedFileBase File { get; set; }
我的HttpPost
控制器看起来像
public ActionResult Upload(UploadViewModel uploadViewModel, string site)
{
...
}
所以,到目前为止一切都很好。被ValidateUploadAttribute
调用并通过或失败,文件类型错误。问题是这个上传表单进入了一个局部视图,它位于另一个模型不是 type 的视图中UploadViewModel
,所以我不能调用类似的东西@Html.ValidateFor(x => x.File)
(即验证失败但实际上没有做任何事情,因为我可以'不要将验证助手放入视图中)
局部视图
<div id="upload-form" class="div-center content-div" style="margin-top: 15px;">
@using (Html.BeginForm("Upload", "Association", FormMethod.Post, new { enctype = "multipart/form-data", id = "upload-form"}))
{
<input type="file" name="File" style="width: 79%;"/>
<input type="submit" value="Upload for Add" style="width: 19%;"/>
}