2011-11-21 71 views
0

我想通過構建一個功能齊全的網站來學習MVC。我有點卡住,當涉及到處理表單,並張貼數據和模型....模型的ASP.NET MVC表格

BTW:我使用EF代碼優先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」可能屬於課程「預代數」。但是,如果我使用下面的代碼,我必須顯式聲明SelectListItems。我認爲,使用上面給定的Assignment模型,我應該可以使用MVC awesomeness自動生成的課程下拉列表。我究竟做錯了什麼?

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, .... 
} 
+3

我認爲你高估了精彩。 – Zruty

回答

1

基本上你是混亂/混合的商業模式和你的UI模型。

這裏的快速解決方法是將下拉列表的數據添加到ViewBag(一個動態對象)。

或者,您可以創建一個class AssignmentModel,其中包含相關的賦值屬性和列表。

並且不,這在模板中不被很好的支持。

你知道你會在Post方法中需要一些錯誤處理嗎?

+0

謝謝,我發佈的示例代碼僅僅是說明我的問題的最低限度。你是什​​麼意思,「在模板中沒有得到很好的支持」? – Didaxis

+0

它不會生成ViewBag中的內容 –