簡體   English   中英

模型的ASP.NET MVC表單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM