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, ....
}
基本上你是混淆/混合你的业务模型和你的UI模型。
这里的快速修复是将下拉列表的数据添加到ViewBag(一个动态对象)。
或者您可以创建一个包含相关赋值属性和List的class AssignmentModel
。
和No,这在模板中不支持。
你知道你需要在Post方法中进行一些错误处理吗?