2011-06-30 13 views
0

ASP.NET Webアプリケーションで複数のオプションのパラメータを取得しようとしています。 RegisterArea()MapRouteを定義すると、Html.ActionLink()メソッドが破られています。asp.net MVC 3複数のオプションIDが動作していないRegisterArea

次のコードは動作します:

Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext) 
     context.MapRoute(_ 
      "Register_default", _ 
      "Register/{controller}/{action}/{id1}", _ 
      New With {.controller = "Home", .action = "Index", .id1 = UrlParameter.Optional} _ 
     ) 
    End Sub 

が、私は(下記)複数のオプションのパラメータを含めるようにURLを変更すると、私のHtml.ActionLink()方法の全てが空のhrefでアンカータグを作成する原因となっています。誰かがこれが起こる原因を教えてもらえますか?

Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext) 
     context.MapRoute(_ 
      "Register_default", _ 
      "Register/{controller}/{action}/{id1}/{id2}/{id3}/{id4}", _ 
      New With {.controller = "Home", .action = "Index", .id1 = UrlParameter.Optional, .id2 = UrlParameter.Optional, .id3 = UrlParameter.Optional, .id4 = UrlParameter.Optional} _ 
     ) 
    End Sub 

答えて

0

私はあなたがいくつかのオプションのパラメータを持つルートを持つことができないことを、唯一の最後のパラメータがこそあなたが記述問題のオプションとすることができると思います。

+0

感謝。しかし、それが当てはまる場合、IDが見つからないURLでチョークしませんか?上記の私の例から、 myurl.com/Register/Signup/WhyRegister myurl.com/Register/Signup/WhyRegister/5/ myurl.com/Register/Signup/WhyRegister/5/25 myurl.com/Register/申し込み/ WhyRegister/5/125分の25 myurl.com/Register/Signup/WhyRegister/5/25/625全てが正しくコントローラのアクションと myurl.com/Register/Signup/WhyRegister/5にIDを渡しています/ 25/625/3125 は、404 – xian713

+0

を編集します:最後のコメントの最後の2つのURLは... 5/25/125/625と... 5/25/125/625/3125 – xian713

関連する問題