MVC - Передача данных с RedirectToAction ()

Насколько я знаю, np.where не поддерживает множественные операторы возврата (по крайней мере, не более двух). Так что либо вы переписываете np.where, чтобы получить одно утверждение True и одно False, и возвращать 1/0 для True / False, либо вам нужно использовать маски.

Если переписать np.where, вы ограничены двумя результатами, и второй результат всегда будет установлен, когда условие не True. Таким образом, это будет также установлено для значений как (S == 5) & (A = np.nan).

df['Result'] = np.where(((df.S == 1) & (df.A == 1)) | ((df.S == 2) & (df.A == 0)), 1, 0)

При использовании масок вы можете применять произвольное количество условий и результатов. Для вашего примера решение выглядит следующим образом:

mask_0 = ((df.S == 1) & (df.A == 0)) | ((df.S == 2) & (df.A == 1))
mask_1 = ((df.S == 1) & (df.A == 1)) | ((df.S == 2) & (df.A == 0))
df.loc[mask_0, 'Result'] = 0
df.loc[mask_1, 'Result'] = 1

Результаты будут установлены в np.nan, где не выполняются никакие условия. Это imho отказоустойчиво и поэтому должно быть использовано. Но если вы хотите, чтобы в этих местах были нули, просто инициализируйте столбец Results нулями.
Конечно, это можно упростить для особых случаев, например, иметь только 1 и 0 в качестве результата, и расширить для любого количества результатов, используя dicts или другие контейнеры.

59
задан tereško 12 April 2013 в 21:11
поделиться

6 ответов

Попытайтесь использовать TempData. Это похоже на однократный объект сессии. Вы помещаете значения, которые Вы хотите в TempData, сразу перенаправляете и выводите их. Здесь существует хорошая рецензия: http://blogs.teamb.com/craigstuntz/2009/01/23/37947/

56
ответ дан MichaelGG 24 November 2019 в 18:30
поделиться

Проблема с RedirectToAction, это возвращает HTTP 302, и браузер находится тогда на своем собственном движении и выполнении совершенно нового Запроса HTTP. Можно хотеть рассмотреть использование cookie и/или объекта сессии сохранить данные между запросами.

4
ответ дан Chad Moran 24 November 2019 в 18:30
поделиться

Второй параметр к RedirectAction является routeValues, не моделью.

protected internal RedirectToRouteResult RedirectToAction(string actionName, object routeValues);

Попытайтесь использовать TempData для модели. Для сохранения данных между перенаправлениями.

7
ответ дан AndreasN 24 November 2019 в 18:30
поделиться

Это кажется, что Вы пытаетесь сделать:

public ActionResult UpdateContent(FormCollection form) {
    ...
    return View("Preview", _pagecontent);
}

Обратите внимание, что перенаправление, как предполагается, является "чистым листом" для браузера (за исключением вещей как подлинный cookie). Вы не добираетесь, чтобы сказать браузеру передавать информацию следующему запросу, так как следующий запрос должен смочь стоять самостоятельно. Все, что Вы получаете, чтобы сделать, говорят браузер что URL запросить затем. В ASP.NET MVC, когда Вы передаете объект arguments RedirectToAction, общественные собственности того объекта добавляются как параметры строки запроса к сгенерированному URL.

2
ответ дан yfeldblum 24 November 2019 в 18:30
поделиться

Похоже на поиск команды UpdateModel:

Проверьте сообщение в блоге ScottGu на тему:

Улучшенные методы UpdateModel и TryUpdateModel

-3
ответ дан David P 24 November 2019 в 18:30
поделиться

Это не работает, потому что RedirectToAction фактически отправляет обратно Http 302 в браузер. Когда браузер получает это 302, он делает новый запрос к серверу, запрашивая новую страницу. Новый запрос, новые временные переменные.

Вы также столкнетесь с этой проблемой, когда попытаетесь сохранить / отредактировать / удалить что-то, но по какой-то причине вы откажетесь от этого и вам придется снова вернуть старую форму.

Итак, вместо :

return RedirectToAction("Preview", _pagecontent);

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

return PreviewLogic(_pagecontent);

Вы также можете использовать диктовку TempData [] для сохранения данных для следующего запроса, как говорили другие, но тогда вы не избежите 302 дополнительных путь к серверу и обратно.

3
ответ дан 24 November 2019 в 18:30
поделиться
Другие вопросы по тегам:

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