2009-08-14 5 views
0

1つのパラメータを使用するルートがある場合、Html.ActionLinkに問題があります。 私はglobal.asxに次のルータを持っている:私は2つのパラメータを渡すActionLinkのを使用する場合ASP.NET MVCでのカスタムルートの問題

 routes.MapRoute(
      "Default",            // Route name 
      "{controller}/{action}/{id}",       // URL with parameters 
      new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
     ); 
     routes.MapRoute(
      "materias", 
      "{controller}/{action}/{id},{titulo_materia}.html", 
      new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
     ); 

は、すべてがOKに動作します。 しかし、私は、私のようなもので終わる最初のルートを使用してリンクを作成しようとすると:

http://meusite.com/controller-name/[parameter],.html

EDIT:

:ここ

が持つ問題をi`mアクションリンクです
<span class="editar"><%=Html.ActionLink("Editar", "Edit", "Users", new { id = this.Model.login }, null)%></span> 

このリンクは別のページにあり、ユーザーデータの管理に使用されます。

+0

ポストあなたのHtml.ActionLinkコード –

+0

私が編集した私のポストを。 – Cleiton

+0

最初のルートルールの前に2番目のルートルールを移動するとどうなりますか? –

答えて

1

まずあなたが一番下にあなたの最も一般的なルートを置く必要があります。

次に、どのようなものをやって:

routes.MapRoute(
     "materias", 
     "{materias}/{action}/{id},{titulo_materia}.html", 
     new { controller = "materias", action = "Index", id = "", titulo_materia = "" } 
    ); 

    routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",       // URL with parameters 
     new { controller = "Home", action = "Index", id = "" } // Parameter defaults 
    ); 

この方法は、materiasルートは唯一materiasコントローラで動作します。

EDIT(テストしていません): htmm ..小さな加えてマーティンの例を使用してみてください:ActionLinkのコードで

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action",id = this.Model.login }); 
+0

私はそれをテストしました...しかし、私は同じ結果を得ています。私は、 "http://meusite.com/controllerName/[first-paramters]?titulo_materia=foobar – Cleiton

+0

ええ!私はそれをやったとうまくいった!ありがとう! – Cleiton

0

用途:

Html.RouteLink("Link Title", new { controller = "Controller", Action= "Action" }); 
+0

@マーティン、しかし、私はユーザー情報を取得するためにユーザーのIDを渡す必要があります。 – Cleiton

関連する問題