所以,我需要让我的网站在路由中传递它:
blah.com/sitename/{controller}/{action}/{id}
“站点名称”就像一个 Vdir,但又不完全是。它将帮助我获得给定站点名称的正确数据等。
这样做的最佳方法是什么?我尝试在路由中执行此操作,但没有通过,因为它找不到页面(这是我尝试直接访问登录页面的时候):
routes.MapRoute(
name: "Default",
url: "{sitename}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
用户将获得一个类似 blah.com/somesite 或 blah.com/anothersite 的 URL。
我只希望路由能够正常工作,但能够提取控制器周围的“某个站点”或“另一个站点”部分。
首先添加一个路由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();
}
}
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句