2016-04-09 41 views
0

我正在学习asp.net mvc中的一些概念。我正在使用实体框架和Visual Studio 2013社区版。我正在创建一个学习的演示应用程序。我根据this链接创建了模型。这些模型如下。 以下为模型。该课程以部门为外键。一个部门可以有很多课程。如何在ASP.NET MVC中从视图到控制器动态添加值?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace ManyItemsDemo2.Models 
{ 
    public class Course 
    { 
     public int CourseID { get; set; } 
     public string Title { get; set; } 
     public string Credits { get; set; } 
     public int DepartmentID { get; set; } 

     public virtual Department Department { get; set; } 
    } 
} 

这是部门模型。部门模式很简单。它与课程模型相关联。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace ManyItemsDemo2.Models 
{ 
    public class Department 
    { 
     public Department() 
     { 
      this.Cources = new HashSet<Course>(); 
     } 
     public int DepartmentID { get; set; } 
     public string Name { get; set; } 
     public double Budget { get; set; } 
     public string Administrator { get; set; } 

     public virtual ICollection<Course> Cources { get; set; } 
    } 
} 

有一个上下文类。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 

namespace ManyItemsDemo2.Models 
{ 
    public class SchoolContext:DbContext 
    { 
     public SchoolContext() : base("SchoolContext") { } 

     public DbSet<Course> Courses { get; set; } 
     public DbSet<Department> Departments { get; set; } 
    } 
} 

现在我已经使用scafolding并创建了具有CRUD功能的控制器和视图。我可以创建一个部门和课程。现在我需要在创建部门时分配多个课程。所以我创建了这个视图模型。这里有一个部门有很多课程。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using ManyItemsDemo2.Models; 

namespace ManyItemsDemo2.ViewModels 
{ 
    public class DeptCourses 
    { 
     public Department Department { get; set; } 
     public IEnumerable<Course> Course { get; set; } 
    } 

} 

随着这个我创建了一个新的视图。在创建部门时可以接受更多的资源。查看结果是这样的。 The View

加号按钮有一个脚本,它来自我早期的问题here。该脚本使用jQuery并克隆下拉列表并添加回来。

问题从这里开始。当我添加多个下拉列表时,假设说3,我在控制器中接收空值,但我收到三个元素,只有一个元素有值,其他元素为空。请参阅图片以获取更多解释。

Image for clarification.

为什么会发生这种情况? PS:我可能忽略了实时场景,因为这是演示应用程序,用于学习和清除与实体框架的一对多关系以及使用MVC的概念。

+0

不知道为什么你在以前的问题中接受答案时,它永远无法工作。它的创建形式控件与您的模型完全没有任何关系。参考答案[这里](http://stackoverflow.com/questions/29161481/post-a-form-array-without-successful/29161796#29161796)和[这里](http://stackoverflow.com/questions/ 28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308)对于某些选项 –

+0

但是在你的情况下,你只想要与你关联的'CouseId'下拉列表,其中如果您查看模型属性需要IEnumerable 课程。但更好的方法是显示每个课程的相关复选框,以便用户可以选择它们(您当前的实施将有其他问题,如用户可能会选择重复项) –

+0

@StephenMuecke我在前端进行了测试。该脚本添加了下拉以便接受。我正在检查您建议的链接。 –

回答

0

This为我工作。只需在脚本中更改名称并在httppost中添加字符串数组。

相关问题