0

我今天刚开始学习 MVC3,所以请原谅任何愚蠢(特别是一个名字不好的标题)。

此网址无效:

.../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

我不确定 MVC 管道是否能够“看到”扩展方法 Test 以便使用默认路由表自动映射它。MVC 使用基于约定的方法。它认为所有控制器都在特定位置等。它可能不会考虑寻找扩展方法。

于 2012-06-20T22:05:58.667 回答
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 回答