asp.net-mvc – 将{sitename}参数传递给MVC控制器操作
发布时间:2020-12-16 00:16:35 所属栏目:asp.Net 来源:网络整理
导读:如何在路径中检索站点范围的URL参数,而不会使用参数混乱每个控制器操作?我的问题类似于 this question,但我想避免使用ModelBinder的混乱. IE浏览器.在Global.asax.cs中: routes.MapRoute( "Default",// Route name "{sitename}/{controller}/{action}/{id}
如何在路径中检索站点范围的URL参数,而不会使用参数混乱每个控制器操作?我的问题类似于
this question,但我想避免使用ModelBinder的混乱. IE浏览器.在Global.asax.cs中:
routes.MapRoute( "Default",// Route name "{sitename}/{controller}/{action}/{id}",new { sitename = "",controller = "SomeController",action = "Index",id = "" } ); 所以,而不是SomeController类中的以下内容: public ActionResult Index(string sitename) { SiteClass site = GetSite(sitename); ... return View(site.GetViewModel()); } 我宁愿拥有以下内容: public ActionResult Index() { SiteClass site = CurrentSite; // where CurrentSite has already retrieved data based on unique URL sitename parameter. ... return View(site.GetViewModel()); } 也许这可以通过控制器范围的动作过滤器来实现? OnActionExecuting? 解决方法
首先添加一个到Global.aspx.cs的路由来传递{sitename}参数:
routes.MapRoute( "Sites",// URL with parameters new { sitename = "",controller = "Home",id = "" } // Parameter defaults ); 然后在基本控制器中添加以下简单代码: 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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- asp.net-web-api – 带有json有效负载中令牌的We
- asp.net – LINQ查询,其中boolean值为true或fals
- 自己动手写ORM框架
- ASP.NET 5中的设计时T4模板(VS 2015)
- asp.net-mvc – 如何注入Azure工作者角色?
- ASP.NET:如何将HtmlAnchor转换为静态文本?
- asp.net-mvc – ASP.net MVC – 视图如何访问模型
- asp.net – 为什么我应该使用telerik radcontrol
- asp.net-mvc – FormsAuthentication LoginUrl
- asp.net-mvc – 基于MVC角色的路由
热点阅读