Вопрос по asp.net-mvc-3 – MVC3 - Возникают проблемы при передаче int [] в действие контроллера на RedicrectToAction из другого действия

4

У меня есть 2 действия в одном контроллере.

public ActionResult Index(string filter, int[] checkedRecords)

а также

public ActionResult ExportChkedCSV(string filter, int[] checkedRecords)

Второе действие (ExportChkedCSV) содержит этот редирект:

if (reject != 0)
        {
            return RedirectToAction("Index", new { filter, checkedRecords });
        }

Когда я перехожу, параметр checkedRecords корректно заполняется в операторе RedirectToAction, но когда он попадает оттуда в индекс ActionResult, selectedRecords имеет значение null. Я пытался выполнить filter =, checkedRecords = и т. Д. У меня нет проблем с этим из представления в контроллер. Если я изменю тип массива на что-то еще, я смогу получить значение - как передать int [] из действия в действие? Что я делаю неправильно? Спасибо

Ваш Ответ

3   ответа
6

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

Используйте TempData для передачи массива

...
if (reject != 0) {
    TempData["CheckedRecords"] = yourArray;
    return RedirectToAction("Index", new { filter = filterValue });
}
...

public ActionResult Index(string filter) {
    int[] newArrayVariable;
    if(TempData["CheckedRecords"] != null) {
        newArrayVariable = (int[])TempData["CheckedRecords"];
    }
    //rest of your code here
}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded user1166147
Error: User Rate Limit Exceeded
1

что ASP.Net знает, как создать URL-адрес, используя массив int, который вы передаете. Если массив int однозначно идентифицирует ресурс, вы можете попытаться преобразовать массив в строку, разделенную дефисом (или аналогичную), и затем проанализировать строку в методе Index.

Если вы просто пытаетесь сохранить данные между запросами, используйте TempData:

http://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.tempdata.aspx

1

вы создаете новый объект. Вы должны определить не только имена индексов, но и их значения.

return RedirectToAction("Index", new { filter = filter, checkedRecords = checkedRecords });
Error: User Rate Limit Exceeded user1166147

Похожие вопросы