Cyr*_*pta 1 c# asp.net-mvc routing
我在我独特的ASP.Net MVC项目中有一个独特的要求.基本上我们正在将一个较旧的基于Linux的网站迁移到MVC,我们希望保留最后一个网站上的URL.
为网站的子目录(例如'www.mywebsite.com/pickes/cherry-pickle-recipe.html')创建新的控制器是不切实际的.
所以我想做以下其中一项
为URL创建查找列表.应根据数据库检查URL,如果找到URL,则应从某个控制器返回某个操作.
捕获没有控制器的所有url请求并将它们发送到某个控制器 - >动作.
我该怎么办呢?
我想你可以通过实现IRouteHandlerInterface编写自定义路由处理程序来实现这一点
public class LookupRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
IRouteHandler handler = new MvcRouteHandler();
var vals = requestContext.RouteData.Values;
if(String.IsNullOrEmpty(vals["controller"])
{
// fetch action and controller from database
vals["controller"] = dbcontroller;
vals["action"] = dbaction;
}
return handler.GetHttpHandler(requestContext);
}
}
Run Code Online (Sandbox Code Playgroud)
你还需要做一件事,即在global.asax中注册你的路由处理程序
routes.MapRoute(
"dbroute",
"{controller}/{action}/{id}",
new { id = "" }
).RouteHandler = new LookupRouteHandler();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |