0

この行動喚起でアクション メソッド名が提供されないのはなぜですか?

@Url.Action("Index","NewStore")

それはただ生み出す...

localhost/TemplateUI/en-CA/Atomic/Wassabi/Store

最後に /index を生成するために必要です....

4

1 に答える 1

1

これは、Url.Actionヘルパーが Global.asax のルート登録を使用するためです。そして、あなたはIndexアクション名として渡しているので、ルート登録で のデフォルト値を指定していると思いますaction="Index"ので、省略しています。

たとえば、次のデフォルト ルートがあるとします。

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

    routes.MapRoute(
        "Default",
        "{controller}/{action}",
        new { controller = "Home", action = "Index" }
    );
}

controller = "Home"との両方のaction = "Index"制約が指定されているため、完全に同等の URL になり、コントローラーのアクションを呼び出します。//HomeIndexHome

したがって、いくつかのヘルパーを使用して URL を作成しようとすると、同じことが起こります。ルートが使用されます。

URL にアクション名が必要な場合はaction、ルート定義で制約を削除したことを確認してください。

于 2012-04-23T11:37:07.217 に答える