Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 属性路由特定操作之外的视图上的意外行为。_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc 属性路由特定操作之外的视图上的意外行为。

Asp.net mvc 属性路由特定操作之外的视图上的意外行为。,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,例如,我在一个控制器上有两个动作。 这两个操作都使用属性路由 [Route("proofCampaign/{campaignId?}", Name ="Route1")] public ActionResult ProofCampaign(int campaignId){ //Do stuff return View{campaignVM} } [Route("proofOrder/{orderId}", Name ="Ro

例如,我在一个控制器上有两个动作。 这两个操作都使用属性路由

[Route("proofCampaign/{campaignId?}", Name ="Route1")]
public ActionResult ProofCampaign(int campaignId){
            //Do stuff
            return View{campaignVM}
            }
[Route("proofOrder/{orderId}", Name ="Route2")]
public ActionResult ProofOrder(int orderId){
            //Do stuff
            return View{orderVM}
            }
当我在任何视图上使用
@Url.RouteUrl(“Route1”)
时,我会得到正确的Url,但当我尝试在任何视图上使用
@Url.RouteUrl(“Route2”)
时,我会得到一个空值

但是,当我转到Route2指向的实际页面/视图时,它返回预期的url

上述代码中的差异是路线中的“?”,即使参数不是可选的。 最后,我想在其他视图上显示第二个链接,作为菜单的一部分


为什么在没有输入可选参数指示符的情况下路由不显示?

因为
orderId
不是可选的,所以您需要将其包含在Url中

@Url.RouteUrl("Route2", new { orderId = xxx })

因为
orderId
不是可选的,所以您需要将其包含在Url中

@Url.RouteUrl("Route2", new { orderId = xxx })

因为
orderId
不是可选的,所以你需要将它包含在Url
@Url.RouteUrl(“Route2”,新的{orderId=xxx)
把它放在一个答案中,这样我就可以相信你了。很乐意帮助。按要求完成。编码愉快!!!因为
orderId
不是可选的,你需要将它包含在Url
@Url.RouteUrl(“Route2”,新的{orderId=xxx)
把它写在一个答案中,这样我就可以相信你了。很高兴能帮助你。按要求完成。编码愉快!!!