ASP.NET MVC Dropdownlist сохранит выбранное значение в браузере после публикации - PullRequest
0 голосов
/ 19 мая 2010

Я строю выпадающий список на моей странице aspx следующим образом

<%= Html.DropDownList("SelectedRole", new SelectList((IEnumerable)Model.roles, "RoleId", "RoleName", Model.SelectedRole), "")%>

отлично работает для первого Get и выбрано первое значение по умолчанию; затем я выбираю пункт из выпадающего списка и отправляю форму.

контроллер связывает значения правильно,

public ActionResult About([Bind] Roles r)
{
    //r.SelectedRole = the selected value in the page.
    //Roles r = new Roles();
    r.roles = new List<Role>();
    r.roles.Add(new Role(1, "one"));
    r.roles.Add(new Role(2, "two"));
    r.roles.Add(new Role(3, "three"));
    r.roles.Add(new Role(4, "four"));
    r.SelectedRole = null;
    return View(r)
}

Затем я обнуляю выбранный элемент и возвращаю свой вид, но все равно выбранный ранее выбранный элемент (хотя я обнулял его)

Есть идеи, что я делаю что-то не так или это ошибка в MVC?

Я использую ASP.NET MVC 1

Спасибо

1 Ответ

2 голосов
/ 19 мая 2010

Это нормальное поведение всех помощников html: они будут смотреть на значения POSTed для выполнения привязки. Это означает, что вы не можете изменить значение в действии вашего контроллера и ожидать, что оно отразится на представлении, если вы используете стандартные помощники. Если в POST есть значение SelectedRole, оно всегда будет использоваться, а последний параметр раскрывающегося списка полностью игнорируется.

Вы можете написать собственного помощника для достижения этого или перенаправить после POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...