作为一个例子,我在一个控制器上有两个动作。 这些操作都使用属性路由。
[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。
上述代码的不同之处在于"?"在路径中,即使参数不是可选的。 最终,我想在其他视图中显示第二个链接作为菜单的一部分。
为什么没有放入可选的参数指示符就不显示路线?
答案 0 :(得分:0)
由于orderId
不是可选的,因此您需要将其包含在网址
@Url.RouteUrl("Route2", new { orderId = xxx })