让我解释一下我的问题。
我在服务器上发布了一个带有.aspx页面(Web窗体)的网站,例如: www.mysite.com 。
几年前,它启动了一个庞大的数字营销活动,其中最重要的是联系表格,例如: www.mysite.com/contact.aspx。
现在(忘记razon),该项目已迁移到mvc项目。然后,通过 www.mysite.com/contact 访问新的联系表。也就是说,按路线而不是按页面。
我需要一种方法,将MVC项目中的 www.mysite.com/contact.aspx (链接发送到露营)重定向到 www.mysite.com/contact 。就是说:没有服务器http或dns配置。
我尝试创建一个页面 contact.aspx 。在我的MVC项目中,并重定向到路由 / contact ,但不起作用。我猜想是因为MVC致力于路由而不是视图(在这种情况下为.aspx)。
有人可以帮我任何想法或指示吗?请注意,不可能在服务器配置上进行工作,仅在mvc项目上进行编码即可。
Project ASP.net MVC4和框架4.5
答案 0 :(得分:1)
我想我知道你想做什么...
将Contact.aspx添加到MVC应用程序的根目录。
然后在后面的代码中,在Contact.aspx.cs中添加一个RedirectToRoute调用Page_Load事件,如下所示:
(假设您新的Contact Razor视图称为“索引”,并且位于“ Contact”控制器中)
public partial class Contact : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.RedirectToRoute(new { controller = "Contact", action = "Index" });
}
}
如果Contact.aspx与MVC控制器不在同一个项目中,则可以尝试正常的Response.Redirect,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("~/Contact/Index");
}
答案 1 :(得分:0)
您只能在当前的MVC项目RouteConfig文件中进行301永久重定向。
为此www.mysite.com/contact.aspx在路由配置下使用
routes.MapRoute(
name: "ContactOld",
url: "Contact.aspx",
defaults: new { controller = "Home", action = "Contact", id = UrlParameter.Optional }
);
为此www.mysite.com/contact在路由配置下使用
routes.MapRoute(
name: "Contact",
url: "Contact",
defaults: new { controller = "Home", action = "Contact", id = UrlParameter.Optional }
);