【问题标题】:MVC to redirect with route values instead of query stringMVC 使用路由值而不是查询字符串进行重定向
【发布时间】:2017-06-22 22:14:08
【问题描述】:

我正在开发一个示例应用程序,其中有一个注册和详细操作。 我想在注册新团队后重定向到详细视图。

我的 Regsiter 邮政编码如下所示;

[HttpPost]
public async Task<ActionResult> Register(TeamEditorVm teamRegisterVm)
{
    if (ModelState.IsValid)
    {
        var teamDetailVm = await Managers.TeamManager.CreateAsync(teamRegisterVm);
        return RedirectToAction("Details", new { id = teamDetailVm.Id });
    }

    return View(teamRegisterVm);
}

有没有办法强制RedirectToAction("Details", new { id = teamDetailVm.Id }); 使用 URL 的路由值,例如

hxxps://test.com/team/detail/1

而不是查询字符串?

hxxps://test.com/team/detail?id=1

【问题讨论】:

  • 如果您使用默认路由,它将生成../team/details/1。显示您当前的路由定义和Details() 方法的签名
  • 感谢您的想法 - 我有一个全部路由,我在默认路由之前添加了它,这导致它无法识别该模式(控制器/动作/id)。我将其切换为首先添加默认路由,然后是“catch all”路由,它开始工作。谢谢!

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-mvc-routing query-string


【解决方案1】:
RedirectToAction("Details", new { id = teamDetailVm.Id });

这会将您重定向到详细信息操作,如果您的路由包含 id 作为默认参数,那么它将显示给您

hxxps://test.com/team/detail/1

而不是作为查询参数。我刚刚在 MVC5 中对其进行了测试,它对我有用。请检查您的路线。

【讨论】:

  • 原来我们的路线我们添加的顺序错误。
猜你喜欢
  • 2020-12-28
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-09
  • 2010-11-23
  • 2014-03-06
相关资源
最近更新 更多