如何将自定义aspx页面重定向到mvc动作方法
本文关键字:mvc 方法 重定向 自定义 aspx | 更新日期: 2023-09-27 18:11:55
我已经将aspx项目升级为mvc。现在我的一些老客户用。aspx页面调用url,他们在mvc项目中得到404(未找到)。
所以现在我必须重定向。aspx到mvc页面。
旧URL
www.domain.com/bookshop/showproduct.aspx?isbn=978-1-59333-934-0
新URL
www.domain.com/{product_name}
我想通过mvc的路由机制。一旦这种url出现它就会调用我的自定义MVC动作在字符串参数中,我会得到showproduct。aspx?isbn = 978-1-59333-934-0
你能建议一个最好的方法,用最少的代码做到这一点
创建一个新的类RouteHandler,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
namespace Sample.Helpers
{
public class RouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new ASPDotNetHttpHandler();
}
}
public class ASPDotNetHttpHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
string product = context.Request.QueryString["isbn"];
int index = context.Request.Url.AbsoluteUri.IndexOf("bookshop/showproduct.aspx?");
if (!(string.IsNullOrEmpty(product) || index == -1))
{
string newUrl = context.Request.Url.AbsoluteUri.Substring(0, index)+"/" + product;
context.Response.Redirect(newUrl, true);
}
}
}
}
在RouteConfig.cs文件的RegisterRoutes方法中插入如下所示的新路由:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add(new Route("bookshop/showproduct.aspx", new BIRS.Web.Helpers.RouteHandler()));