我在视图上有30个字段的相同下拉列表。有没有办法在视图包中为所有30个使用默认值的相同选择列表,或者我必须有30个单独的视图包项目具有相同的选择列表和默认值?
我将选择列表添加到我的控制器编辑方法中的视图包中:
ViewBag.Pulmonary_01 = new SelectList(PulmonaryList(), "Text", "Value", admission.Pulmonary_01);
这些字段是Pulmonary_01到Pulmonary_30。在我看来,我使用:
@Html.DropDownList("Pulmonary_01", String.Empty)
如果我使用ViewBag.Pulmonary代替_01,则在保存时不匹配。两个障碍匹配一般的“肺”视图和所有字段,因此它们保存,另一个具有所选值。我没有办法避免使用30个ViewBags。
答案 0 :(得分:1)
这根本不是问题。您可以根据需要多次使用相同的视图包,只需将ViewBag转换为SelectList即可。例如,如果你有一个类似的模型:
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.Pulmonary_01并且您有一个名为Pulmonary_01的模型属性,那么这将导致映射问题,因为这些值将在表单集合中相互覆盖。