如何在 ASP.NET MVC 中接收从视图到控制器的动态添加值?
How to receive dynamically added values from view to controller in ASP.NET MVC?
我正在学习 asp.net mvc 中的一些概念。我正在使用 entity framework 和 visual studio 2013 社区版。我正在创建一个用于学习的演示应用程序。我根据 this link 创建了模型。模型如下。
下面是课程模型。该课程有部门作为外键。一个部门可以有很多门课程。
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; }
}
}
有上下文class。
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; }
}
}
现在我已经使用脚手架并创建了具有 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; }
}
}
与此同时,我创建了一个新视图。创建部门时可以接受更多的资源。查看结果是这样的。
加号按钮有一个脚本来自我之前的问题。该脚本使用 jquery 并克隆下拉列表并添加回去。
问题从这里开始。当我添加多个下拉列表时,比如 3,我在控制器中收到 null,虽然我收到三个元素,但只有一个元素有值,其他元素为 null。请参阅图片以获得更多说明。
为什么会这样?
PS:我可能忽略了实时场景,因为这是一个演示应用程序,用于学习和清除与 entity framework 的一对多关系的概念以及使用 MVC。
This 对我有用。只是更改了脚本中的名称并在 httppost 中添加了字符串数组。
我正在学习 asp.net mvc 中的一些概念。我正在使用 entity framework 和 visual studio 2013 社区版。我正在创建一个用于学习的演示应用程序。我根据 this link 创建了模型。模型如下。 下面是课程模型。该课程有部门作为外键。一个部门可以有很多门课程。
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; }
}
}
有上下文class。
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; }
}
}
现在我已经使用脚手架并创建了具有 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; }
}
}
与此同时,我创建了一个新视图。创建部门时可以接受更多的资源。查看结果是这样的。
加号按钮有一个脚本来自我之前的问题
问题从这里开始。当我添加多个下拉列表时,比如 3,我在控制器中收到 null,虽然我收到三个元素,但只有一个元素有值,其他元素为 null。请参阅图片以获得更多说明。
为什么会这样? PS:我可能忽略了实时场景,因为这是一个演示应用程序,用于学习和清除与 entity framework 的一对多关系的概念以及使用 MVC。
This 对我有用。只是更改了脚本中的名称并在 httppost 中添加了字符串数组。