我正从服务中检索一些配置并将此数据传递到编辑视图。用户可以更改文本和复选框字段,这些值可以正常返回。
我有一个下拉列表,其中填充了数据库类型的枚举值。这些值将传递给视图并正确显示,但是当用户更改选择时,列表中的第一个值将应用于数据模型。
以下是控制器和视图中的一些代码。
控制器:
[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>
答案 0 :(得分:0)
尝试更改此视图
@Html.DropDownListFor(model => model.DBType, ViewData["DBTypes"] as SelectList, "select a value")
这应该将选择保留到模型的属性DBType
或者像这样更改行以获得相同的结果
@Html.DropDownList("DBType", ViewData["DBTypes"] as SelectList )