RedirectToAction中不需要的查询字符串

时间:2016-05-16 06:42:37

标签: asp.net-mvc asp.net-core-mvc

我正在使用如下所示的重定向语句来转到带参数

的特定操作
return RedirectToAction(nameof(ActivityTypeController.Create), "ActivityType", new { selectedID = 34 });

我的行动路线配置是

[Route("Create/{selectedID}")]
public IActionResult Create(int selectedID)

我的期望

http://localhost:27945/ActivityType/Create/34

但它返回

http://localhost:27945/ActivityType/Create?selectedID=34

我也用

RouteData.Values.Remove("selectedID")

但没有改变!

我正在使用MVC6和Asp.net 5模板

更新

我的重定向动作如下所示

[Route("Create/{selectedID}")]
    public IActionResult Create(int selectedID)
    {
        BL.BO.ActivityTypeBO bo = new BL.BO.ActivityTypeBO();
        ViewBag.Title = "title1";
        ViewBag.Description = "some desc";
        var data = bo.GetAll().Where(p => p.ParentID == null).OrderBy(p => p.Title);
        SelectList parents;
        parents = new SelectList(data, "ID", "Title", selectedID);
        ViewBag.Parents = parents;
        return View();
    }

我在重定向到操作之前使用 RoutDate

RouteData.Values.Remove("selectedID");
            return RedirectToAction(nameof(ActivityTypeController.Create), "ActivityType", new { selectedID = 34 });

1 个答案:

答案 0 :(得分:0)

MVC会像查询字符串一样添加参数。所以,在像你这样的情况下,你需要将它附加到RedirectToAction方法的动作参数。下面是代码

return RedirectToAction(nameof(ActivityTypeController.Create) + "/34" , "ActivityType");