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)
把它写在一个答案中,这样我就可以相信你了。很高兴能帮助你。按要求完成。编码愉快!!!