Как назначить выбор из DropDownList для модели данных в MVC3 - PullRequest
0 голосов
/ 18 ноября 2011

Я получаю некоторую конфигурацию из службы и передаю эти данные в представление редактирования. Пользователь может вносить изменения в поля текста и флажков, и эти значения возвращаются в порядке.

У меня есть выпадающий список со значениями из перечисления для типа базы данных. Эти значения передаются в представление и отображаются правильно, но когда пользователь изменяет выбор, первое значение в списке применяется к модели данных.

Ниже приведен код из контроллера и вида.

Контроллер:

[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 голосов
/ 18 ноября 2011

Попробуйте изменить вид следующим образом

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

Это должно сохраняться при выборе свойства DBType вашей модели

Или измените строку таким образом, чтобы получить тот же результат

@Html.DropDownList("DBType", ViewData["DBTypes"] as SelectList )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...