我已将aspx项目升级到mvc。现在我的一些旧客户使用.aspx页面调用url,他们在mvc项目中获得404(未找到)。
所以现在我必须将.aspx重定向到mvc页面。
旧网址
www.domain.com/bookshop/pc-58573-53-{product_name}.aspx
新网址
www.domain.com/{product_name}
我正在考虑通过mvc的路由机制来做。就像一旦这种类型的网址来了,那么应该调用我的自定义mvc动作,在字符串参数中我将获得pc-58573-53- {product_name} .aspx
请你用最少的代码建议一个最好的方法。
答案 0 :(得分:1)
只需使用路线'bookshop/{pageName}'
以下是使用Route属性的2个场景的示例:
如果您不希望更改网址:
[Route("bookshop/{pageName}")]
public ActionResult MyAction(string pageName)
{
// add logic according to what you receive in pageName property
return View();
}
或者,如果您想重定向到新网址:
[Route("bookshop/{pageName}")]
public ActionResult MyAction(string pageName)
{
// Create and use a method to ExtractProductNameFromPageName
string productName = ExtractProductNameFromPageName(pageName);
return Response.Redirect("~/" + productName);
}
此处的参数'pageName'
应该抓住超过'bookshop/'
的网页名称。
如果您没有启用路由属性映射,请在RegisterRoutes
文件的RouteConfig.cs
方法中添加以下代码:
// enable mapping of routes defined using Route attribute on specific actions.
routes.MapMvcAttributeRoutes();