为两个控制器创建一个视图页面。两个模特班?

时间:2014-01-07 14:52:23

标签: c# asp.net visual-studio-2013 asp.net-mvc-5

我为控制器创建了部门和指定的脚手架。

我有以下项目结构:

  • 网络
    • 控制器
      • DepartmentController.cs
      • DesignationController.cs
    • 模型
      • Department.cs
      • Designation.cs
      • 指定

具有以下数据库结构:

  • 数据库
      • deptID(主键)
      • DEPTNAME
      • 描述
    • 指定
      • desgtID(主键)
      • desgName
      • 描述
    • 问题
      • ID
      • deptID(外键)
      • desgID(外键)
      • queName
      • 日期时间

我想为这些场景创建一个视图页面。像这样:

  

插入表格名称(TextBox)+部门名称(下拉列表框)+名称名称(下拉列表框)

Department.cs

namespace mvcAppraisalSystem.Models
{
  public class Department
  {
        [Key]
        public int deptID { get; set; }
        public string deptName { get; set; }
        public string Description { get; set; }

   }
   public class CompanyDBContext : DbContext
  {
    public DbSet<Department> Departments { get; set; }
  }
}

Designation.cs

namespace mvcAppraisalSystem.Models
{
   public class Designation
   {
        [Key]
        public int desgID { get; set; }
        public string desgName { get; set; }
        public string description { get; set; }
   }
   public class RoleDBContext : DbContext
   {
       public DbSet<Designation> Designations { get; set; }
   }
}

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。您可以创建一个视图模型,该模型将是此视图的特定模型。视图模型将包含部门和名称的列表以及所选部门,名称和字段的ID。

然后对视图模型使用强类型视图。

可能的视图模型示例:

        public class MyScenarioForm
        {
            [Key]
            public string FormName { get; set; }
            public int SelectedDesgId {get; set;}
            public int SelectedDeptId { get; set; }

            public IEnumerable<Designation> Designations { get; set; }
            public IEnumerable<Department> Departments { get; set; } 

            // ... constructor or method that creates initial instance with Designations and Departments populated
        }

处理下拉列表的另一种方法是对这些下拉列表使用部分视图。这样,此表单的视图模型不需要具有指定和部门的列表。如果您要重复使用这些下拉列表,那么这也很好,那么您可以重复使用这些部分视图。