属性在特定操作之外的视图上路由意外行为。

时间:2016-08-05 16:07:08

标签: 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 ="Route2")]
public ActionResult ProofOrder(int orderId){
            //Do stuff
            return View{orderVM}
            }

当我在任何视图上使用@Url.RouteUrl("Route1")时,我会得到正确的网址,但是当我尝试在任何视图上使用@Url.RouteUrl("Route2")时,我得到一个null。

然而,当我转到Route2导致的实际页面/视图时,它会返回预期的URL。

上述代码的不同之处在于"?"在路径中,即使参数不是可选的。 最终,我想在其他视图中显示第二个链接作为菜单的一部分。

为什么没有放入可选的参数指示符就不显示路线?

1 个答案:

答案 0 :(得分:0)

由于orderId不是可选的,因此您需要将其包含在网址

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