在特定操作之外的视图上属性路由意外行为。
Attribute routing unexpected behavior on views outside specific action.
举个例子,我在一个控制器上有两个动作。
这些操作都使用属性路由。
[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")
时,我得到一个空值。
然而,当我去实际 page/view 时,Route2 通向它 returns 预期的 url。
上面代码的区别在于“?”在路由中,即使参数不是可选的。
最终我想在其他视图上显示第二个 link 作为菜单的一部分。
为什么不输入可选参数指示器就不会显示路由?
因为 orderId
不是可选的,所以您需要将其包含在 Url
中
@Url.RouteUrl("Route2", new { orderId = xxx })
举个例子,我在一个控制器上有两个动作。 这些操作都使用属性路由。
[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")
时,我得到一个空值。
然而,当我去实际 page/view 时,Route2 通向它 returns 预期的 url。
上面代码的区别在于“?”在路由中,即使参数不是可选的。 最终我想在其他视图上显示第二个 link 作为菜单的一部分。
为什么不输入可选参数指示器就不会显示路由?
因为 orderId
不是可选的,所以您需要将其包含在 Url
@Url.RouteUrl("Route2", new { orderId = xxx })