Я получаю некоторую конфигурацию из службы и передаю эти данные в представление редактирования. Пользователь может вносить изменения в поля текста и флажков, и эти значения возвращаются в порядке.
У меня есть выпадающий список со значениями из перечисления для типа базы данных. Эти значения передаются в представление и отображаются правильно, но когда пользователь изменяет выбор, первое значение в списке применяется к модели данных.
Ниже приведен код из контроллера и вида.
Контроллер:
[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>