0

私は今日MVC3を学び始めたばかりなので、愚かなこと(特に名前の悪いタイトル)を許してください。

この URL は機能しません:

.../Test

しかし、これは次のことを行います:

.../Index

これが私のコードです:

public class MyController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

public static class MyExt
{
    public static ActionResult Test(this MyController test)
    {
        return test.Index();
    }
}
4

3 に答える 3

3

ControllerActionInvokerコントローラーのメソッドを呼び出すだけなので、拡張メソッドは機能しません。ASP.NET MVC パイプラインの詳細については、こちらを参照してください。

于 2012-06-20T22:26:22.637 に答える
0

同じ結果を得るには、global.asax に新しいルートを設定することをお勧めします

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

すべてのコントローラーで同じにしたい場合

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

申し訳ありませんが、ここで何を達成しようとしているのかまだわかりません

ルーティングの概要については、次のリンクを参照してください: http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs

于 2012-06-20T22:10:43.827 に答える
0

デフォルトのルーティングテーブルを使用して自動的に魔法のようにマッピングするために、MVC配管が拡張メソッドTestを「見る」ことができるかどうかはわかりません。MVC は、規則ベースのアプローチを使用します。すべてのコントローラーが特定の場所などにあると考えています。おそらく、拡張メソッドを探すことは考えないでしょう。

于 2012-06-20T22:05:58.667 に答える