【问题标题】:Http redirect in MVC3 .NETMVC3 .NET 中的 Http 重定向
【发布时间】:2012-05-16 07:34:32
【问题描述】:

所以我的网站在生产中运行并且间歇性地运行(是的,呃)......这些重定向似乎没有发生

public ActionResult Create()
{
    string newuserid = BizLayer.CreateUser();

    return RedirectToRoute("MyController/MyAction", new { userid = newuserid });
}

用户创建得很好,代码肯定会通过生成 newuserid,但下一个控制器操作永远不会被输入。所以我想知道我是否正确理解重定向。在输入新操作之前,新 URL 是否会被发送回客户端?输入 Create() 后,下一个操作中的处理是不可避免的(假设 Bizlayer 中没有崩溃)还是存在可以阻止它的浏览器情况?

这就是它应该去的地方:

public ActionResult MyAction(string userid, DateTime? date)

这是路由:

routes.MapRoute(
      "MyController/MyAction", // Route name
      "MyController/MyAction/{userid}/{date}", // URL with parameters
      new
      {
          controller = "MyController",
          action = "MyAction",
          date = UrlParameter.Optional
      } // Parameter defaults
      );

基本上我想知道,客户端是否可以拒绝 MVC 重定向并阻止重定向到新控制器操作的发生?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing http-redirect


    【解决方案1】:

    您是否尝试过指定 RouteValueDictionary 中的所有值?你可能想试一试...

    RedirectToRoute(new { Controller = ..., Action=..., userid=...})
    

    【讨论】:

      【解决方案2】:

      你试过了吗?

      return RedirectToAction("MyAction", "MyController", new { userid = newuserid });
      

      【讨论】:

      • RedirectToAction 放一个 ? URL 中的参数,我不想要。
      • 如果用户 ID 在您的路由中,它会将其添加到 url 而不是作为查询字符串。
      【解决方案3】:

      你试过了吗:

      public ActionResult Create()
      {
          string newuserid = BizLayer.CreateUser();
      
          return RedirectToRoute("MyController/MyAction", new { userid = newuserid, date = null });
      }
      

      【讨论】:

      • 这就是我命名路线的方式。 RedirectToAction 放置一个 ? URL 中的参数,我不想要。
      • 我怀疑这一点。你编辑你的示例代码,所以没有误解 =)
      • 好的,我已经在上面添加了路由。
      • @BradThomas 我已经更新了答案,希望它更符合您的要求。
      • 无法将 null 分配给匿名类型属性。我已经知道我的代码(通常)适用于 date = null
      猜你喜欢
      • 1970-01-01
      • 2011-10-19
      • 2011-09-25
      • 2013-07-10
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      相关资源
      最近更新 更多