我在MVC4项目中有一个SiteController类,“站点” URL工作正常,但是我需要在“站点”之后有一个动态URL部分,我需要该URL看起来像这样:

mysite.com/Site/{DYNAMICSTRING}/用户(或其他)

{DYNAMICSTRING}可以是子站点的名称,因此控制器应检查该子站点在数据库中是否确实存在。

现在,我正在使用查询字符串,但这不是我的客户想要的。

我怎样才能做到这一点?

额外细节

我的路线:

    routes.MapRoute(
                "Subdomain",                                              // Route name
                "{controller}/{action}/{dynamicString}",                           // URL with parameters
                new { controller = "Site", action = "Subdomain" }  // Parameter defaults
            );


我的控制器:

    public ActionResult Subdomain(string dynamicString)
    {
        return View();
    }


导航到/ Site / Subdomain / SomeString时,dynamicString的值为null

最佳答案

您必须配置路由。例如,如果您有Homecontroller:

    public class HomeController:Controller
    {
        public ActionResult Subdomain(string dynamicString)
        {
            return View();
        }
    }


那么你必须配置你的路由这样的

routes.MapRoute(
            "Subdomain",                                              // Route name
            "{controller}/{action}/{dynamicString}/anyOtherParams",                           // URL with parameters
            new { controller = "Home", action = "Subdomain", dynamicString = "" }  // Parameter defaults
        );

09-27 16:11