2010-04-25 28 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

相關問題