Поле выбора не установлено, даже если вид объекта установлен? - PullRequest
0 голосов
/ 06 августа 2011

Привет

Я получил помощь по этой проблеме пару дней назад:

Странная проблема с 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 вручную в раскрывающемся списке data.ALS.ST1 будет установлен на 2 при вводе действия.

Почему в раскрывающемся меню не установлено значение 2?

Редактировать1:

Это единственный javascript, который работает с ALS_ST1 на всей странице:

$('#ALS_ST1').change(function () {
            if (IsNotDblClick(this.id)) {
                document.forms['list_ad'].submit();
            }
            else
                return false;
        });

Edit2

Model.ShowAdTypeList1 относится к типу SelectList и не имеет выбора. DropDownFore предназначен для установки выбранного значения ST1.

EDIT3

Пожалуйста, обратите внимание, что это частичное представление фактически является шаблоном: http://weblogs.asp.net/rashid/archive/2009/11/27/extending-asp-net-mvc-2-templates.aspx.

1 Ответ

1 голос
/ 07 августа 2011

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

<%= 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:1010 *

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