我今天刚开始学习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();
}
}
答案 0 :(得分:3)
扩展方法不起作用,因为ControllerActionInvoker
只调用控制器的方法。您可以阅读有关ASP.NET MVC管道here的更多信息。
答案 1 :(得分:0)
我不确定MVC管道是否能够“看到”扩展方法Test,以便使用默认路由表自动地映射它。 MVC使用基于约定的方法。它认为所有控制器都在特定的位置等。可能它不会考虑寻找扩展方法。
答案 2 :(得分: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