首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET MVC中RedirectToAction而不丢失请求数据

如何在ASP.NET MVC中RedirectToAction而不丢失请求数据
EN

Stack Overflow用户
提问于 2008-08-05 05:33:42
回答 6查看 91K关注 0票数 124

使用ASP.NET MVC时,有些情况(例如表单提交)可能需要RedirectToAction

一种这样的情况是,在表单提交后遇到验证错误,并且需要重定向回表单,但希望URL反映表单的URL,而不是它提交到的操作页面。

由于我要求表单包含最初的POSTed数据,为了方便用户以及验证目的,我如何通过RedirectToAction()传递数据?如果我使用viewData参数,我的POST参数将被更改为GET参数。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-08-05 05:43:28

解决方案是使用TempData属性来存储所需的请求组件。

例如:

代码语言:javascript
复制
public ActionResult Send()
{
    TempData["form"] = Request.Form;
    return this.RedirectToAction(a => a.Form());
}

然后在你的“表单”动作中,你可以去:

代码语言:javascript
复制
public ActionResult Form()
{
    /* Declare viewData etc. */

    if (TempData["form"] != null)
    {
        /* Cast TempData["form"] to 
        System.Collections.Specialized.NameValueCollection 
        and use it */
    }

    return View("Form", viewData);
}
票数 81
EN

Stack Overflow用户

发布于 2008-08-07 05:12:32

请记住,TempData将表单集合存储在会话中。如果您不喜欢这种行为,可以实现新ITempDataProvider接口,并使用其他一些机制来存储临时数据。除非您知道(通过测量和分析)会话状态的使用正在伤害您,否则我不会这么做。

票数 37
EN

Stack Overflow用户

发布于 2009-04-05 09:36:54

看看MVCContrib,你可以这样做:

代码语言:javascript
复制
using MvcContrib.Filters;

[ModelStateToTempData]
public class MyController : Controller {
    //
    ...
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档