2016-08-05 4 views
1

В качестве примера у меня есть два действия на одном контроллере. Эти действия используют маршрутизацию атрибутов.Атрибут маршрутизации непредвиденного поведения при просмотре вне определенного действия.

[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.

Разница в приведенном выше коде является «?» в маршруте, хотя параметр не является необязательным. В конечном счете, я хочу отобразить вторую ссылку на другие виды как часть меню.

Почему маршрут не отображается, не помещая необязательный индикатор параметра?

+0

Поскольку 'orderId' не является факультативным вам необходимо включить его в URL-адрес' @ Url.RouteUrl («route2», новый { orderId = xxx) ' – Nkosi

+0

Положите это в ответ, чтобы я мог счесть вас этим. –

+0

Рад помочь. Выполнено в соответствии с запросом. Счастливое кодирование !!! – Nkosi

ответ

0

Поскольку orderId не является факультативным вам необходимо включить его в Url

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

 Смежные вопросы

  • Нет связанных вопросов^_^