在RedirectToAction MVC中发送查询字符串

时间:2016-04-30 07:38:44

标签: asp.net-mvc redirecttoaction

我在以下控制器中使用了两种操作方法 -

public class VisitMasterController 
{
    public ActionResult StartBrVisit()
    {
        string id=(Request.QueryString["id"].ToString(); //value=null here
    }

    public ActionResult BrNotPresent()
    {
         return RedirectToAction("StartBrVisit","VisitMaster" , new { id = "id", name = "name" });
    }
{ 

重定向后,Request.QueryString["id"]返回null。

我的默认路由配置是 -

         context.MapRoute(
         "BR_default",
         "BR/{controller}/{action}/{id}",
         new { action = "Index", id = UrlParameter.Optional },
         new[] { "OpinionLeader.Areas.BR.Controllers" } //add this line
     );

任何帮助?

1 个答案:

答案 0 :(得分:1)

您已使用名为id的参数定义了路由,因此当您使用new { id = "id" }时,RedirectToAction()方法会找到匹配项,并将该值添加为路由值,而不是查询字符串value(在name的情况下,没有匹配,因此将其值添加为查询字符串值)。您可以使用

访问它
string id = (string)Request.RequestContext.RouteData.Values["id"]

但是,将参数添加到方法

会容易得多
public ActionResult StartBrVisit(string id)