2
我最近創建了一個使用MVC4和EF5的新應用程序。這些表已經存在,所以我們首先使用數據庫。這對我來說都是新的,這是我第一次在MVC或EF。ValidationResult和ViewModels
我在我的EMDX文件中有一些模型,其中一個我繼承了IValidatableObject並在Validate函數中放置了一些代碼。這工作正常,然後我改變了我的視圖使用ViewModel,現在我從驗證中得到一個錯誤,我很難過。它仍然調用我的驗證功能,但不再將它發回屏幕,我只是得到一個黃色的屏幕。
錯誤:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
型號:
public partial class Names : IValidatableObject {
public int Id { get; set; }
public string Name { get; set; }
public bool Active { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
// some logic, this works
}
}
視圖模型:
public class NamesVM {
public Names Name { get; set; }
// some other stuff in this model, but not part of this problem
}
控制器:編輯功能:
[HttpPost]
public ActionResult Edit(NamesVM nvm) {
if (ModelState.IsValid) {
dbCommon.Entry(nvm.Name).State = EntityState.Modified;
dbCommon.SaveChanges();
return RedirectToAction("Index");
}
return View(nvm);
}
查看:
@model NamesVM
<div class="editor-label">
@Html.LabelFor(model => model.Name.Id)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name.Id)
@Html.ValidationMessageFor(model => model.Name.Id)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Name.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name.Name)
@Html.ValidationMessageFor(model => model.Name.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Name.Active)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name.Active)
@Html.ValidationMessageFor(model => model.Name.Active)
</div>
<input type="submit" value="Save" />
的代碼工作正常,如果一切都在屏幕上正確,但在驗證失敗時,我沒有得到一個不錯的錯誤,我得到一個黃色的畫面。我相信我錯過了一些東西,我只是不知道是什麼。