ASP.. NET MVC模型表单

本文关键字:表单 模型 MVC NET ASP | 更新日期: 2023-09-27 18:15:29

我试图通过建立一个功能齐全的网站来学习MVC。当涉及到处理表单,发布数据和模型时,我有点卡住了....

BTW:我使用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();
}

这就是我卡住的地方:我希望这个表单有一个下拉列表,列出作业可能属于的不同课程。例如,一个名为"Chapter 3 Review, Questions 1-77"的作业可以属于课程"Pre-Algebra"。但是,如果使用下面的代码,就必须显式声明SelectListItems。我认为,上述给定的分配模型,我应该能够有课程自动生成使用MVC棒的下拉列表。我做错了什么?

AddAssignment Partial View:

@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, ....
}

ASP.. NET MVC模型表单

基本上你是混淆/混合你的业务模型和你的UI模型。

这里的快速修复是将下拉列表的数据添加到ViewBag(一个动态对象)。

或者您可以创建一个包含相关赋值属性和List的class AssignmentModel

和No,这在模板中不支持。

你知道你需要在Post方法中进行一些错误处理吗?