在下拉列表中为MVC 4选择默认值

时间:2013-07-23 08:37:28

标签: asp.net-mvc-4 razor html.dropdownlistfor viewbag

我正在尝试使用选定的值制作下拉列表,但它不起作用:/我在网上搜索但我找不到解决方案:/

目前,我正在这样做:

在C#中:

ViewBag.ID_VEH = new SelectList(db.VEHI, "ID_VEH", "COD_VEH", 4); // 4 is an example

在我的cshtml中:

@Html.DropDownListFor(model => model.ID_VEH, ViewBag.ID_VEH as SelectList)

下拉列表已完成,但未选择默认值:/您有什么想法吗?

3 个答案:

答案 0 :(得分:12)

我想要做的是添加要在我的模型的下拉列表中显示的项目列表,因此我不必通过viewbag传递该列表。 另外,我想在我的模型中添加一个包含SelectedValue的字段,我填写控制器

然后你可以做

@Html.DropDownListFor(model => model.ID_VEH, new SelectList(Model.listVEH, "ID_VEH", "COD_VEH", Model.SelectedVEH_ID), "--Select VEH--")

答案 1 :(得分:9)

只需将model.ID_VEH的初始值设置为4:

在控制器中:

model.ID_VEH = 4;

答案 2 :(得分:1)

以防有人在找到答案时遇到类似的问题:

我希望看到下拉框的重点放在我在控制器中给出的项目(硬编码):

控制器:

SGLDataRegistration.Models.DataRegistrationModel mdl = rwd.GetData(DateTime.Now.Year, currentWeek, DateTime.Now, 139, 1);

查看:

                    <div id="tempCustomerselect">
                        @Html.LabelFor(m => m.CustomerName)
                        @Html.DropDownListFor(m => m.PitchID, new SelectList((new SGLDataRegistration.Models.CustomerModel().GetRoles()).OrderBy(x => x.CustomerName), "PitchID", "CustomerName"), new {id = "ddlCustomer", @class="jsddlCustomer"})

                    </div>

在这个GetData中,我设置了所需的硬编码值:

public SGLDataRegistration.Models.DataRegistrationModel GetData(int year,int weekNumber,DateTime datum,int pitchID,int parameter)     {         尝试         {             DataRegistrationParameters drp = GetParameter(parameter);

        //vul een instantie van het dataregistrationmodel
        SGLDataRegistration.Models.DataRegistrationModel drm = new Models.DataRegistrationModel();
         drm.WeekNumber = weekNumber;
         drm.BeginDay = datum;
         drm.Parameter = parameter;
         drm.Year = year;
         drm.PitchID = pitchID;