我在以下控制器中使用了两种操作方法 -
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
);
任何帮助?
答案 0 :(得分:1)
您已使用名为id
的参数定义了路由,因此当您使用new { id = "id" }
时,RedirectToAction()
方法会找到匹配项,并将该值添加为路由值,而不是查询字符串value(在name
的情况下,没有匹配,因此将其值添加为查询字符串值)。您可以使用
string id = (string)Request.RequestContext.RouteData.Values["id"]
但是,将参数添加到方法
会容易得多public ActionResult StartBrVisit(string id)