级联下拉列表中的值为空

时间:2019-06-13 08:35:21

标签: c# asp.net-mvc angular entity-framework cascadingdropdown

我在ASP.NET MVC + Angular项目中使用Entity Framework,并且使用以下数据进行级联下拉,创建票证时,这些下拉值存储在票证表中。

父实体:

|  Id  |  Name          | 
-------------------------
|  0   |  N/A          |
|  1   |  Software      |
|  2   |  Hardwire      |
|  3   |  System        |
|  4   |  Electricity   |
-------------------------

子实体:

|  Id  |  MasterId  |  Name          | 
--------------------------------------
|  0   |     0      |  N/A           |
|  1   |     1      |  Java          |
|  2   |     1      |  C#            |
|  3   |     2      |  Monitor       |
|  4   |     2      |  Keyboard      |
|  5   |     3      |  EMail         |
|  6   |     3      |  Antivirus     |
|  7   |     3      |  Operating Sys.|
--------------------------------------

票务实体:

|  Id  |  ParentId  |  ChildId  |  Subject  | 
---------------------------------------------
|  1   |     1      |     1     |  Xxxxxxx  |
|  2   |     1      |     2     |  Xxxxxxx  |
|  3   |     2      |     3     |  Xxxxxxx  |
|  4   |     2      |     4     |  Xxxxxxx  |
|  5   |     3      |     5     |  Xxxxxxx  |
|  6   |     3      |     6     |  Xxxxxxx  |
|  7   |     3      |     7     |  Xxxxxxx  |
|  8   |     4      |     0     |  Xxxxxxx  |
|  9   |     4      |     0     |  Xxxxxxx  |
|  10  |     4      |     0     |  Xxxxxxx  |
---------------------------------------------

有些父记录没有子记录,例如电力,因此,我计划使用以下方法:

方案I: 用户选择父级,然后从级联下拉列表中选择相应的子级记录。如果没有父记录的子项,则该子项下拉列表将被隐藏,并且Ticket表的ChildId设置为0(零)。因为ParentId和ChildId都是必填字段。

方案二: 但是,我不确定这是否是此方案的好方法,并考虑为主记录创建另一个子记录没有以下名称的子记录:

子实体:

|  Id  |  ParentId  |  Name          | 
--------------------------------------
|  ... |     ...    |  ...           |
|  8   |     4      |  Electricity   |
|  ... |     ...    |  ...           |
--------------------------------------

这样做,将不需要使用ID为0的parent6-child记录,并且当用户选择Electricity作为父级时,子项下拉列表将在Electricity作为子级记录(也可以隐藏)和ParentId-中列出。票证表中的ChildId将为4-8。哪种情况更好?还是针对这种情况有更好的方案?问候...

0 个答案:

没有答案