ASP.NET MVC 路由 - 添加站点名称?



所以,我需要我的网站在路由中传递它:

blah.com/sitename/{控制器}/{操作}/{id}

"站点名称"就像Vdir,但不完全是。它将帮助我获得正确的数据等...对于给定的站点名称。

最好的方法是什么?我尝试在路由中执行此操作,但没有去,因为它找不到页面(这是我尝试直接进入登录页面时(:

routes.MapRoute(
name: "Default",
url: "{sitename}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

用户将获得一个 URL blah.com/somesite 或 blah.com/anothersite。

我只希望路由能够正常工作,但能够提取控制器周围的"某个站点"或"另一个站点"部分。

首先添加一个路由到Global.aspx.cs以传递{sitename}参数:

routes.MapRoute(
"Sites", // Route name
"{sitename}/{controller}/{action}/{id}", // URL with parameters
new { sitename = "", controller = "Home", action = "Index", id = "" }// Parameter defaults
);

创建一个名为BaseController的新控制器。然后在基本控制器中添加以下简单代码:

public class BaseController: Controller
{
public string SiteName = "";
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase req = filterContext.HttpContext.Request;
SiteName = filterContext.RouteData.Values["sitename"] as string;
base.OnActionExecuting(filterContext);
}
}

并在派生控制器中使用:

public class HomeController: BaseController
{
public ActionResult Index()
{
ViewData["SiteName"] = SiteName;
return View();
}
}

希望这有帮助。

最新更新