Возвращаемое представление с моделью и строкой запроса - PullRequest
4 голосов
/ 23 февраля 2012

Я пытаюсь вернуться к просмотру с контроллера, который имеет строку запроса и модель

return View("BillingReport.aspx/?report=" + fc["report_selector"], bilDet);

но это дает мне ошибку времени выполнения страницы, которая не найдена, так как она добавляет .aspx и т.д. в конце URL

RedirectToAction() не имеет возможности сделать это.
Есть ли способ сделать это или mvc3 ограничивает нас использованием либо строки запроса, либо модели

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

MVC не поддерживает то, что вы ищете,

Но я не понимаю, почему вы хотите перенаправить на URL с ModelValues.

Любое перенаправление является запросом GET, поэтому вы можете построить модель и вернуть View из этого действия.

View () ожидает имя вида и модель, связанную с ним.

Redirect () или RedirectToAction () используются для перенаправления URL-адреса на другой контроллер / действие. Таким образом, вы не можете передать модель. Даже если вы попытаетесь передать модель, она добавит свойства модели в качестве параметров строки запроса.

1 голос
/ 20 июня 2015

Вот причина, по которой вы хотели бы использовать модель и строку запроса: строка запроса позволяет вам указать способ сохранения URL с информацией о состоянии.Модель позволяет передавать много непроверенных данных.Итак, вот я думаю, как сделать это в MVC 5 (возможно, не работает для более старых версий, но, вероятно, работает):

Используйте 2 действия вместо 1 для представления.используйте первый, чтобы установить строку запроса через RedirectToAction.Используйте второе действие, чтобы вернуть модель в представление.И вы передаете модель от первого действия второму действию через состояние сеанса.Вот пример кода:

public ActionResult Index(string email){
    Session["stuff"]=Load(email);
    return RedirectToAction("View1action", new { email = email, color = "red" });
}

public ActionResult View1action(string email){
    return View("View1",(StuffClass)Session["stuff"]);
}
0 голосов
/ 23 февраля 2012

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

TempData["bilDet"] = bilDet;
return RedirectToAction(....);   // your controller, action etc.

На действии вы можете затем получить свои TempData.TempData будет автоматически удален.

Но также проверьте: ASP.NET MVC - TempData - Хорошая или плохая практика

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