C# 对多个字段重复使用同一dropdownlist并填充db值mvc4

C# 对多个字段重复使用同一dropdownlist并填充db值mvc4,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我在一个视图上有30个字段的相同下拉列表。有没有办法在viewbag中为所有30个具有默认值的项目使用相同的selectlist,或者我必须有30个具有相同selectlist和默认值的单独viewbag项目 我在我的控件编辑方法中将selectlist添加到viewbag中: ViewBag.Pulmonary_01 = new SelectList(PulmonaryList(), "Text", "Value", admission.Pulmonary_01); 字段为PURONAL_0

我在一个视图上有30个字段的相同下拉列表。有没有办法在viewbag中为所有30个具有默认值的项目使用相同的selectlist,或者我必须有30个具有相同selectlist和默认值的单独viewbag项目

我在我的控件编辑方法中将selectlist添加到viewbag中:

ViewBag.Pulmonary_01 = new SelectList(PulmonaryList(), "Text", "Value", admission.Pulmonary_01);
字段为PURONAL_01至PURONAL_30。在我看来,我使用:

@Html.DropDownList("Pulmonary_01", String.Empty)

如果我使用ViewBag.pulmonal而不是_01,则在保存时它与它不匹配。两个障碍物匹配一个常规“肺”视图和所有字段,以便保存,另一个障碍物具有选定的值。我看不出有什么办法可以避免30个可视包

这根本不是问题。您可以根据需要多次使用同一个视图包,只需将视图包投射到选择列表中即可。例如,如果您有一个模型,如:

public class Pulmonary
{
    public int Pulmonary_01 { get; set; }
    public int Pulmonary_02 { get; set; }
    public int Pulmonary_03 { get; set; }
在您的操作中,您可以创建如下视图包:

 ViewBag.Pulmonaries = new SelectList(PulmonaryList(), "Text", "Value");
您应该能够在视图中执行以下操作:

 @model PulmonaryClassFullNamespace.Pulmonary
 // Form declaration
 @HtmlDropDownListFor(model => Model.Pulmonary_01, (SelectList)ViewBag.Pulmonaries)
 @HtmlDropDownListFor(model => Model.Pulmonary_02, (SelectList)ViewBag.Pulmonaries)
 //.....
 // Form closure

唯一需要注意的是ViewBag属性名称与任何模型属性名称都不匹配。例如,如果您将ViewBag.Pulmonal_01命名为,并且您有一个名为Pulmonal_01的模型属性,则这将导致映射问题,因为这些值将在表单集合中相互覆盖。

30在同一屏幕中的下拉列表。这对用户来说太可怕了。@Shyju我同意,但他们必须填写这个表格,而且在不增加页面的情况下,没有更好的方法。这是一个数据收集站点,需要输入大量字段。拆分为向导(下一个…)