[英]ASP.NET MVC Forms for Model
我正在嘗試通過構建功能齊全的網站來學習MVC。 在處理表單,發布數據和模型時,我有些困惑。
順便說一句:我正在使用EF Code-First w / MS SQL CE
這是有問題的模型:
public class Assignment
{
public int AssignmentID { get; set; }
public int? CourseID { get; set; }
public string Name { get; set; }
// etc...
public virtual Course Course { get; set; }
}
public class Course
{
public int CourseID { get; set; }
// etc...
}
我正在加載允許用戶添加新任務的局部視圖
控制器:
public ActionResult Assignments()
{
var assignments = myContext.Assignments.OrderBy(x => x.DueDate);
return View(assignments);
}
[HttpPost]
public ActionResult AddAssignment(Assignment assignment)
{
myContext.Assignments.Add(assignment);
myContext.SaveChanges();
return RedirectToAction("Assignments");
}
// Returns a strongly-typed, partial view (type is Assignment)
public ActionResult AddAssignmentForm()
{
return PartialView();
}
這是我遇到的問題:我希望此表單具有一個下拉列表,列出作業可能屬於的不同課程。 例如,一個名為“第3章復習,問題1-77”的作業可能屬於課程“ Pre-Algebra” 。 但是,如果使用下面的代碼,則必須顯式聲明SelectListItems。 我認為,使用上面給定的工作分配模型,我應該能夠使用MVC真棒功能自動生成課程的下拉列表。 我究竟做錯了什么?
AddAssignment部分視圖:
@model MyModels.Assignment
@using(Html.BeginForm("AddAssignment", "Assignments"))
{
// Can't I create a drop down list without explicitly
// setting all of the SelectListItems?
@Html.DropDownListFor(x => x.Course, ....
}
基本上,您是在混淆/混合您的業務模型和UI模型。
此處的快速解決方案是將下拉列表的數據添加到ViewBag(動態對象)。
或者,您可以創建一個class AssignmentModel
,其中包含相關的Assignment屬性和List。
不,這在模板中沒有很好的支持。
您是否意識到在Post方法中需要一些錯誤處理?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.