如何将DropDownList中的选择分配给MVC3中的数据模型

时间:2011-11-18 10:00:06

标签: asp.net-mvc-3

我正从服务中检索一些配置并将此数据传递到编辑视图。用户可以更改文本和复选框字段,这些值可以正常返回。

我有一个下拉列表,其中填充了数据库类型的枚举值。这些值将传递给视图并正确显示,但是当用户更改选择时,列表中的第一个值将应用于数据模型。

以下是控制器和视图中的一些代码。

控制器:

[HttpPost]
public ActionResult Edit( SettingsModel config)
{
    try
    {
        List<string> configErrors = null;

        if (ModelState.IsValid)
        {
            // Set up a channel factory to use the webHTTPBinding
            using (WebChannelFactory<IChangeService> serviceChannel = new WebChannelFactory<IChangeService>(new Uri(baseServiceUrl)))
            {
                IChangeService channel = serviceChannel.CreateChannel();
                configErrors = channel.SetSysConfig(config);

                // Check for any errors returned by the service
                if (configErrors != null || configErrors.Count > 0)
                {
                    // Display the errors at the top of the page
                    ViewData["ConfigErrors"] = configErrors;

                    // TODO: Force the redisplay of the page

                }
            }
        }

        ViewData["DBTypes"] = new SelectList(Enum.GetValues(typeof(DatabaseType)), config.DBType);

        return RedirectToAction("Index", config);
    }
    catch
    {
        return View();
    }
}

编辑视图:

<tr>
    <td>
        <h4>Database Type</h4>
    </td>
    <td>
        @Html.DropDownList("Database Type", ViewData["DBTypes"] as SelectList )
    </td>
    <td>
        @Html.ValidationMessageFor(model => model.DBType)
    </td>
</tr>

1 个答案:

答案 0 :(得分:0)

尝试更改此视图

@Html.DropDownListFor(model => model.DBType, ViewData["DBTypes"] as SelectList, "select a value")

这应该将选择保留到模型的属性DBType

或者像这样更改行以获得相同的结果

@Html.DropDownList("DBType", ViewData["DBTypes"] as SelectList )