2012-03-02 5 views
2

を期待通りにルーティングではない、私はこのコードurl.Action(コントローラ、アクションは)私のASP.NET MVC 3では

<a [email protected]("myController", "myaction")> 

を使用しています。しかし、私はそれをクリックしたときに、それは私の行動に行くdoes't 。代わりに、私はこのURLを参照してください

http://localhost:1402/?Length=2 

私には何かが欠けていますか?

ありがとうございました。

編集:ここでは

は私のルートは以下のとおりです。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 
+1

Global.asax.csからあなたのルートを含めてください - あなたは正確に*同じ*上記Url.Actionコールがあることを確認することができますか?これは通常、文字列が 'routeValues'オブジェクトであると予想される引数として渡されたときに発生します。 –

答えて

8

最初の引数は、アクション

ように解釈されます私は同じ問題を持っていた
@url.Action("myaction","myController") 
+0

私はそれが反対だったと確信していました、ありがとう。 – kbaccouche

2

Url.Actionのシグネチャは次のとおりです。

Url.Action(string actionName, string controllerName) 

あなたのコードによると、あなたのパラメータの順序が間違っています、試してみる:

@Url.Action("myAction", "myController") 

また、私はそのようになるインデックスアクションでCustomerControllerを持っている場合、exempleのために、コントローラの「コントローラ」の部分を削除することを忘れないでください:

@Url.Action("Index", "Customer") 
+0

はい、あなたは正しいですが、私たちが与えたコードは実際には正確ではありません。' string、string 'overloadはクエリ文字列なしでUrlをレンダリングします。 –

1

... 私のソリューション:

@Html.ActionLink("Link text", "myAction", "myController", new { id=item.ID }, null)

最後のパラメータにnullを追加するだけです。

0

デフォルトのアクション(ルートに定義されていないアクション)では、通常のHTTP GETは自動的に行われます。ちょうどヌルアクションを使用する必要があります。 Url.Action @

(ヌル、「お客様」)

関連する問題