2014-10-30 32 views
0

我有一個帶有addModelError的trry/catch。但它現在正在顯示。是的,我已經在該線上設置了一個斷點,它已經到達線路,但現在顯示。Modelstate。 AddModelError未顯示

這裏是actioni metthod:

[HttpPost]   
     public ActionResult EditPhotos(ImageUploadModel ImageUpload) 
     { 
      var validImageTypes = new string[] 
      { 
     "image/gif", 
     "image/jpeg", 
     "image/pjpeg", 
     "image/png" 
      }; 
      try 
      { 

       if (ImageUpload.file == null && ImageUpload.file.ContentLength == 0) 
       { 
        ModelState.AddModelError("file", "This field is required"); 

       } 


       else if (!validImageTypes.Contains(ImageUpload.file.FileName.Substring(ImageUpload.file.FileName.LastIndexOf('.')))) 
       { 
        ModelState.AddModelError("file", "Please upload Your Photo of type: " + string.Join(", ", validImageTypes)); 
        return View(ImageUpload);     
       } 

       else if (ImageUpload.file != null && ImageUpload.file.ContentLength > 0) 
       { 
        var DirSeparator = Path.DirectorySeparatorChar; 
        var fileName = Path.GetFileName(ImageUpload.file.FileName); 
        //var fileName2 = Path.GetFileName(@"\\Cyclist3.jpg"); 
        var path = Server.MapPath(@"\\Images\\profile" + DirSeparator + fileName.Replace('+', '_')); 
        ImageUpload.file.SaveAs(path); 
        ViewBag.Message = "File has been uploaded successfully"; 
        ModelState.Clear(); 
       } 


      } 
      catch (FileLoadException ex) 
      { 

       throw; 
      } 



      if (ModelState.IsValid) 
      { 
       string username = User.Identity.Name; 
       // Get the userprofile 
       UserProfile user = db.userProfiles.FirstOrDefault(u => u.UserName.Equals(username)); 

       // Update fields 

       byte[] uploadedFile = new byte[ImageUpload.file.ContentLength];    
       ImageUpload.file.InputStream.Read(uploadedFile, 0, ImageUpload.file.ContentLength); 
       user.file = uploadedFile; 
       user.ImageMimeType = ImageUpload.file.ContentType; 

       db.Entry(user).State = EntityState.Modified; 

       try 
       { 
        db.SaveChanges(); 
       } 
       catch (DbEntityValidationException e) 
       { 
        foreach (var eve in e.EntityValidationErrors) 
        { 
         Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", 
          eve.Entry.Entity.GetType().Name, eve.Entry.State); 
         foreach (var ve in eve.ValidationErrors) 
         { 
          Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", 
           ve.PropertyName, ve.ErrorMessage); 
         } 
        } 
        throw; 
       } 

      } 

      return RedirectToAction("Edit", routeValues: new { controller = "Account", activetab = "tabs-2" }); 
     } 

和本所認爲:

<div class="lifile"> 
        <div id="upload-choices"> 
         <div class="editor-label"> 


          @Html.ValidationMessageFor(model => model.file) 

         </div> 

        </div> 
        </div> 

所以〔實施例這樣的:

{ 
         ModelState.AddModelError("file", "Please upload Your Photo of type: " + string.Join(", ", validImageTypes)); 
         return View(ImageUpload);     
        } 

我把一個斷點在AddModelError和它到達那條線,但錯誤沒有顯示。

謝謝

我嘗試這樣做:

查看:

<div class="lifile"> 
        <div id="upload-choices"> 
         <div class="editor-label"> 


          @Html.ValidationMessageFor(model => model.file) 
          @Html.ValidationSummary(true) 

         </div> 

        </div> 
        </div> 

操作方法

else if (!validImageTypes.Contains(ImageUpload.file.ContentType)) 
       { 
        ModelState.AddModelError(string.Empty, "Please choose either a GIF, JPG or PNG image."); 
        return View(ImageUpload); 

       } 
+0

檢查此:http://stackoverflow.com/questions/2818219/asp-net-mvc-html-validationsummarytrue-does-not-display-model-errors – 2014-10-30 09:27:55

+0

感謝您的answare,請參閱我的編輯帖子,請參閱我的更新帖子 – 2014-10-30 09:36:15

+0

jQuery將是你試圖實現的更好的選擇。 – Coder 2014-10-31 05:38:17

回答

0

相信ModelStateDictionary不會將您的RedirectResult一起代碼,則應返回一個ViewResult。

如果你在AddModelError行放置了一個斷點,那行還沒有執行。在下一行放置一個斷點,並且錯誤應該在那裏。

+0

感謝您的評論,但我只有一個viewmodel:ImageUploadModel ImageUpload但如果我返回:view(ImageUpload)不起作用 – 2014-10-30 09:41:14