模型的ASP.NET MVC表格
我想通过构建一个功能齐全的网站来学习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, ....
}
基本上你是混乱/混合的商业模式和你的UI模型。
这里的快速解决方法是将下拉列表的数据添加到ViewBag(一个动态对象)。
或者,您可以创建一个class AssignmentModel
,其中包含相关的赋值属性和列表。
并且不,这在模板中不被很好的支持。
你知道你会在Post方法中需要一些错误处理吗?
谢谢,我发布的示例代码仅仅是说明我的问题的最低限度。你是什么意思,“在模板中没有得到很好的支持”? – Didaxis
它不会生成ViewBag中的内容 –
我认为你高估了精彩。 – Zruty