我有一個帶有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);
}
檢查此:http://stackoverflow.com/questions/2818219/asp-net-mvc-html-validationsummarytrue-does-not-display-model-errors – 2014-10-30 09:27:55
感謝您的answare,請參閱我的編輯帖子,請參閱我的更新帖子 – 2014-10-30 09:36:15
jQuery將是你試圖實現的更好的選擇。 – Coder 2014-10-31 05:38:17