即使设置了视图对象,选择框也未设置
本文关键字:设置 选择 对象 视图 | 更新日期: 2023-09-27 18:04:52
嗨,
我几天前得到了这个问题的帮助:
ASP.NET MVC DropDownFor 的奇怪问题
我得到的解决方案是有效的,但现在我遇到了一个具有相同视图和操作的模拟问题。
这一次,我在加载到主视图的部分视图中得到了以下内容:
<%: Html.DropDownListFor(model => model.ST1, Model.ShowAdTypeList1, new { @class = "dd2", @style = "width:80px;" })%>
这将呈现如下:
<select name="ALS.ST1" id="ALS_ST1">
<option value="0">Alla</option>
<option value="1">Privata</option>
<option value="2">Företag</option>
</select>
我在动作的末尾有以下代码
data.ALS.ST1 = 2;
ModelState.Clear();
return View(data);
问题是下拉列表总是选择0?当在下拉列表中手动选择值2时,数据。进入动作时,ALS.ST1将设置为2。
为什么它没有将下拉列表设置为值2?
第1版:
这是唯一一个在整个页面上使用ALS_ST1的javascript:
$('#ALS_ST1').change(function () {
if (IsNotDblClick(this.id)) {
document.forms['list_ad'].submit();
}
else
return false;
});
第2版
Model.ShowAdTypeList1是SelectList类型的,没有选择。DropDownFore用于将ST1值设置为选定值。
EDIT3
请注意,此局部视图实际上是一个模板:http://weblogs.asp.net/rashid/archive/2009/11/27/extending-asp-net-mvc-2-templates.aspx.
尝试如下呈现下拉列表:
<%= Html.DropDownListFor(
x => x.ST1,
new SelectList(Model.ShowAdTypeList1, "Value", "Text", Model.ST1),
new { @class = "dd2", @style = "width:80px;" }
) %>
这假定ShowAdTypeList1
属性是IEnumerable<SelectListItem>
。如果不是,则可能需要调整Value
和Text
参数。
此外,我建议您只重置POST操作中正在修改的属性,而不是清除整个模型状态:
ModelState.Remove("ALS.ST1");
data.ALS.ST1 = 2;
return View(data);