Форма отправляет те же значения флажков при последующем действии отправки в MVC - PullRequest
0 голосов
/ 01 декабря 2008

Я последовал предложению в этом вопросе ...

[ Как обрабатывать флажки в формах ASP.NET MVC?

... для установки нескольких флажков с одним и тем же атрибутом name = "...", и форма ведет себя, как и ожидалось, в ПЕРВЫЙ раз, когда она была отправлена. Последующие представления формы используют исходный массив значений Guid вместо правильной отправки нового массива проверенных значений элементов.

Соответствующий код в представлении ...

 <% foreach (ItemType itemType in ViewData.Model.ItemTypes) %>
        <%{ %>
        <li>
            <input id="selectedItems" name="selectedItems" type="checkbox" value="<%= itemType.Id%>" />
            <%= itemType.Description %></li>
        <%} %>

Это создает серию флажков, по одному для каждого элемента с атрибутом value = "...", установленным в Id элемента.

Тогда в моем действии контроллера сигнатура метода ...

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SelectItems(Guid[] selectedItems)
{...}

При первом запуске метода массив selectedItems правильно удерживает Guid каждого выбранного элемента. Но последующие отправки формы будут всегда по-прежнему содержать то, что было сначала выбрано в начальном действии отправки, независимо от того, какие изменения вы вносите в то, что он проверял перед отправкой формы. Похоже, это не имеет никакого отношения к моему коду, так как проверка массива selectedItems, который инфраструктура MVC передает в метод, свидетельствует о том, что платформа, кажется, всегда передает одно и то же значение снова и снова.

Закройте браузер, запустите снова, выберите другой начальный флажок при отправке, и процесс начнется заново (идентификаторы изначально выбранного флажка всегда , что указано в аргументе selectedItems).

Предположим, я должен быть толстым и не обращать внимания на какое-то кэширование значений форм в фреймворке, но я бы поклялся, что в Preview 5 это не так.

сводит меня с ума и, вероятно, простая проблема; любые идеи ????

Ответы [ 2 ]

1 голос
/ 01 декабря 2008

FWIW, вот что я делаю (не уверен, что это связано):

  // please MS, stop screwing around!!!!!!!!!!!!!!!
  string r = Request.Form["r"];

Затем продолжайте извлекать значения вручную из 'r'. Я до сих пор использую Preview 4, поскольку они действительно сломали слишком много существующих функций, а не исправили обнаруженные ошибки.

0 голосов
/ 01 декабря 2008

Я не уверен, что является причиной вашей проблемы, но у меня есть WAG ...

Вы RedirectToAction в методе Post вашего контроллера?

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SelectItems(Guid[] selectedItems)
{
  /* lol snip */
  return RedirectToAction("WhateverActionIsTheGetVersionOfThisPostAction");
}

Это может послужить для сброса всего, что происходит в фоновом режиме ... Опять дикая догадка ...

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