0
我對ASP MVC完全陌生,所以對不起,如果我問一些愚蠢的東西。更新ASP MVC4中的模型狀態
ModelState不會被驗證。它說venue.VenueType.Type
爲空。我做對了嗎? 我已經給控制器中的Type
賦值(不知道這是否是最佳實踐),但ModelState無法識別此值。
我讀過關於使用TryUpdateModel
。這並沒有導致任何成功,儘管我不確定我是否正確使用它。
我應該爲此使用ViewModel嗎?我在哪些領域使用?
這是兩種模式:
public class Venue
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public virtual VenueType VenueType { get; set; }
public virtual ICollection<VisitInfo> VisitInfos { get; set; }
}
public class VenueType
{
[Key]
public int Id { get; set; }
[Required]
public string Type { get; set; }
}
一個創造場館集體訴訟:
//
// GET: /Venue/Create
public ActionResult Create()
{
ViewBag.venueTypes = new SelectList(context.VenueTypes, "Id", "Type");
return View();
}
//
// POST: /Venue/Create
[HttpPost]
public ActionResult Create(Venue venue)
{
venue.VenueType = context.VenueTypes.Find(venue.VenueType.Id);
ViewBag.venueTypes = new SelectList(context.VenueTypes, "Id", "Type");
if (ModelState.IsValid)
{
context.Venues.Add(venue);
context.SaveChanges();
return RedirectToAction("Index");
}
return View(venue);
}
而且一個創建視圖:
@model eBouncer_Web.Models.Venue
@* This partial view defines form fields that will appear when creating and editing entities *@
<div class="editor-label">
@Html.LabelFor(model => model.VenueType)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.VenueType.Id, (SelectList) ViewBag.venueTypes)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
因此,最好不要總是使用'ModelState'? – Vincentius
我不能說最好或最差..但模型是你的,所以你可以管理所有的驗證我自己想的.. –