2010-04-25 57 views
0

型号:更好的显示文件上传错误的方法?

public class EmailAttachment 
{ 
    public string FileName { get; set; } 
    public string FileType { get; set; } 
    public int FileSize { get; set; } 
    public Stream FileData { get; set; } 
} 

public class ContactEmail: IDataErrorInfo 
{ 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public string Message { get; set; } 
    public EmailAttachment Attachment { get; set; } 

    public string Error { get { return null; } } 

    public string this[string propName] 
    { 
     get 
     { 
      if (propName == "Name" && String.IsNullOrEmpty(Name)) 
       return "Please Enter your Name"; 
      if (propName == "Email"){ 
       if(String.IsNullOrEmpty(Email)) 
        return "Please Provide an Email Address"; 
       else if(!Regex.IsMatch(Email, ".+\\@.+\\..+")) 
        return "Please Enter a valid email Address"; 
      } 

      if (propName == "Message" && String.IsNullOrEmpty(Message)) 
       return "Please Enter your Message"; 
      return null; 
     } 
    } 
}  

而且我的控制文件

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Con(ContactEmail ce, HttpPostedFileBase file) 
{ 
    return View(); 
} 

现在的问题
从我得到名称,电子邮件,信息和上传文件的形式。我可以使用公共字符串this [string propName]自动为Name,Email,Message自动验证错误。如果Attachment.FileSize> 10000,我如何显示验证错误?如果我编写它的代码
公共字符串这个[string propName]
我alwasy得到附件空。我如何填写ContactEmail的附件对象,以便我可以管理同一地点的所有错误?

回答

0

您可以通过调用UploadFiles上传(形式,“folderForFiles);

public void UploadFiles(FormCollection form, string folder) 
    { 
     foreach (string file in Request.Files) 
     { 
      HttpPostedFileBase hpf = Request.Files[file]; 

      if (hpf.ContentLength == 0) 
      { 
       form[file] = null; 
      } 
      else 
      { 
       var filename = hpf.FileName.Replace(" ", "_").Replace(".", DateTime.Now.Date.Ticks + "."); 

       UploadFileName = filename; 
       hpf.SaveAs(Server.MapPath("~/Content/" + folder + "/" + filename)); 

       form[file] = UploadFileName; 
      } 

     } 

    } 

它会很容易hpf.ContentLength添加到一个变量并运行,如果它的大小 ,然后有

ModelState.AddModelError("","File is too large to be uploaded"); 
return; 

似乎ModelState中仍然是有效的,那么这将在您的错误汇总显示 只需修改示例代码以增加自己的限制和检查。

输入hpf。然后应该给你所有的扩展可用于扩展等太

+0

我也可以添加,与asp.net MVC元数据和dataAnnotation似乎很多neater [必需(ErrorMessage =“设计编号是必需的。”),显示名称(“设计编号:“)] public Int32 designNum {get;组; } – davethecoder 2010-04-25 13:14:30