2016-08-05 6 views
1

例として、1つのコントローラに2つのアクションがあります。 アクションは両方とも属性ルーティングを使用します。特定のアクション外のビューに対する予期しない動作のルーティング。

[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を取得するが、私は、私がnullを取得し、任意のビューに@Url.RouteUrl("Route2")を使用しようとすると、任意のビューに@Url.RouteUrl("Route1")を使用しています。

しかし、Route2が実際のページ/ビューに移動すると、予想されるURLが返されます。

上記コードの違いは、「?」です。このパラメータはオプションではありません。 最終的に、メニューの一部として他のビューに2番目のリンクを表示したいとします。

オプションのパラメータ表示器を入れずにルートが表示されないのはなぜですか?

+0

でそれを含める必要がオプションではありませんので、{新しいですorderId = xxx) ' – Nkosi

+0

答えに入れておいてください。 –

+0

喜んで助けてください。要求されたとおりに完了します。ハッピーコーディング!!! – Nkosi

答えて

0

`orderId`はオプションではありませんあなたは、URLに含める必要があるためorderIdが(「Route2」Url.RouteUrl @`あなたは、URL

@Url.RouteUrl("Route2", new { orderId = xxx }) 
関連する問題