簡體   English   中英

ASP.NET MVC路由

[英]ASP.NET MVC Routes

我可以看到一個可以使這段代碼編譯的示例嗎?

    public IEnumerable<RouteBase> Routes
    {
        get
        {
            return new List<Route>()
            {
                new Route(...)
            }
        }
    }

如果RouteCollection.MapRoute()不存在,該怎么辦?

我試圖讓我的控制器負責映射路由,而不是Global.asax.cs。 public IEnumerable<RouteBase> Routes是我的控制器的成員。 如果Controller負責路由,則通過在Global.asax.cs中的routes.MapRoute()中使用單獨的硬編碼URL來斷開路由耦合是一個壞主意。

在回應哈維先生時:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        RouteTable.Routes.Include(new RootController());
    }
}

public static class RouteCollectionExtension
{
    public static RouteCollection Include(this RouteCollection routes, IRoutedController controller)
    {
        foreach (var route in controller.Routes)
        {
            routes.Add(route);
        }

        return routes;
    }
}

和:

public class RootController : Controller, IRoutedController
{
    public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

    public IEnumerable<RouteBase> Routes
    {
        get
        {
            return new List<Route>()
            {
                new Route("{controller}/{action}/{id}", ...?!?)
            };
        }
    }
}

在這篇文章中嚇到我的一行是以下內容

我正在嘗試讓我的控制器負責映射路線

asp.net mvc背后的整個想法是明確的關注點分離。 這將殺死控制器的可測試性,因為控制器不僅不再控制,而且還干預路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM