如何在ASP.NET MVC中动态创建和管理新控制器?

时间:2012-10-26 16:20:39

标签: asp.net-mvc visual-studio .net-3.5 url-rewriting

从我在ASP.NET MVC中开发的网站的私有区域中,我想创建一个新网页(或更合适的控制器),其网址段如“www.mysite.com/newpage/”(而非“www.mysite”)的.com / myController的/ NEWPAGE /“);

我不希望在设计/开发时创建控制器,我希望能够在运行时创建控制器并将其名称(url段)存储在数据库中,因此当请求页面时,应用程序会检查它是否存在存在于数据库中并呈现页面(视图)。

任何人都知道互联网上的一个例子,它解释了实现类似选项的最佳方法吗?

1 个答案:

答案 0 :(得分:1)

执行此操作的最佳解决方案是为单个控制器创建多个路由,并根据路由名称执行代码。这些路径名也可以由数据库管理。

示例:

Global.asax中

public static void RegisterRoutes(RouteCollection routes)
{
    // The collection of route can be manage via DB
    foreach (string route in new[] { "route1", "route2", "route3" })
    {
        routes.MapRoute(
                route,
                route + "/{*args}",
                new { controller = "MyController", action = "MyAction", args = UrlParameter.Optional, routeName = route }
        );
    }
}

myController的

public ActionRestult MyAction(string args)
{
    switch(RouteData.Values["routeName"].ToString()){
        case "route1" :
            // do your code
        break;
        case "route2" :
            // do your code
        break;
        case "route3" :
            // do your code
        break;
    }
}

希望这会有所帮助!!