因此,我需要让我的网站在路由中传递该消息:
blah.com/sitename/ {controller} / {action} / {id}
“站点名称”就像一个Vdir,但不完全相同。它将帮助我获取给定站点名称的正确数据等。
做到这一点的最佳方法是什么?我尝试在路由中执行此操作,但是没有走,因为它找不到页面(这是在我尝试直接登录到登录页面时):
Zip
将为用户提供blah.com/somesite或blah.com/anothersite等网址。
我只希望路由功能能够正常工作,但能够提取控制器周围的“某个站点”或“另一个站点”部分。
答案 0 :(得分:1)
首先向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();
}
}
希望这会有所帮助。