即使设置了视图对象,选择框也未设置

本文关键字:设置 选择 对象 视图 | 更新日期: 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>。如果不是,则可能需要调整ValueText参数。

此外,我建议您只重置POST操作中正在修改的属性,而不是清除整个模型状态:

ModelState.Remove("ALS.ST1");
data.ALS.ST1 = 2;
return View(data);