在 RedirectToAction MVC 中发送查询字符串
Send Query String in RedirectToAction MVC
我在下面的控制器中有两个动作方法-
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"]
returns 为空。
我的默认路由配置是-
context.MapRoute(
"BR_default",
"BR/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "OpinionLeader.Areas.BR.Controllers" } //add this line
);
有什么帮助吗?
您已经使用名为 id
的参数定义了一个路由,因此当您使用 new { id = "id" }
时,RedirectToAction()
方法会找到一个匹配项并将该值添加为路由值,而不是查询字符串值(在 name
的情况下,没有匹配项,因此将其值添加为查询字符串值)。您可以使用
访问它
string id = (string)Request.RequestContext.RouteData.Values["id"]
但是,向您的方法添加参数会容易得多
public ActionResult StartBrVisit(string id)
我在下面的控制器中有两个动作方法-
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"]
returns 为空。
我的默认路由配置是-
context.MapRoute(
"BR_default",
"BR/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "OpinionLeader.Areas.BR.Controllers" } //add this line
);
有什么帮助吗?
您已经使用名为 id
的参数定义了一个路由,因此当您使用 new { id = "id" }
时,RedirectToAction()
方法会找到一个匹配项并将该值添加为路由值,而不是查询字符串值(在 name
的情况下,没有匹配项,因此将其值添加为查询字符串值)。您可以使用
string id = (string)Request.RequestContext.RouteData.Values["id"]
但是,向您的方法添加参数会容易得多
public ActionResult StartBrVisit(string id)