2016-07-24 55 views
0

我目前使用下面的代码来验证上传的文件是一种特定的类型。但是,使用Validation.IsValid的代码似乎允许一切通过,并因此将代码上传到系统。Validation.IsValid()不验证错误剃刀C#

有人请提供一些帮助吗?

使用@ HTML.ValidationMessage我可以看到错误验证发生(即,只有CSV被允许)

谢谢

@using Microsoft.Web.Helpers; 
    @{ 
     if(IsPost && @System.Web.HttpContext.Current.User.IsInRole("EHM\\Domain Admins")) { 
      if(Request.Files[0].ContentLength == 0){ 
       ModelState.AddError("fileUpload", "You must upload a file"); 

      } else { 
       var allowedExtensions = new[]{".csv"}; 
       var extension = Path.GetExtension(Request.Files[0].FileName.ToLower()); 
       if(!allowedExtensions.Contains(extension)){ 
        ModelState.AddError("fileUpload", "Only CSV are allowed"); 
       } 
      } 
      if(Validation.IsValid()) { 
       var fileName = ""; 
       var fileSavePath = ""; 
       var uploadedFile = Request.Files[0]; 
       fileName = Path.GetFileName(uploadedFile.FileName); 
       fileSavePath = Server.MapPath("~/App_Data/UploadedFiles/" + fileName); 
       uploadedFile.SaveAs(fileSavePath); 
      } 
      else { 
      <p class="bg-danger"> File has not been uploaded </p> 
      } 
     } 

    } 

edfef

@FileUpload.GetHtml(
    initialNumberOfFiles:1, 
    allowMoreFilesToBeAdded:false, 
    includeFormTag:true, 
    uploadText:"Upload CSV only") 
@Html.ValidationMessage("fileUpload") 

回答

0

试试这个

ModelState.AddModelError(string.Empty, "Only CSV are allowed"); 

代替

ModelState.AddError("fileUpload", "Only CSV are allowed"); 

与空键添加模型误差,而不是将它与一个特定的属性。
注意:通常最好将正确的属性添加到您的ViewModel并执行该属性的验证。

+0

嗨mok,我已经尝试了上述,但我得到以下编译错误。我需要什么依赖关系? CS1061:'System.Web.WebPages.Html.ModelStateDictionary'不包含'AddModelError'的定义,并且没有找到接受'System.Web.WebPages.Html.ModelStateDictionary'类型的第一个参数的扩展方法'AddModelError'(你是否缺少using指令或程序集引用?) – GlenCloncurry

+0

使用'System.Web.Mvc.ModelStateDictionary.AddModelError'。 – mok