2011-11-21 73 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中的内容 –