如何访问通过URL传递视图名称的站点视图(mvc .net)? (用于重定向到路由)

时间:2018-11-01 05:25:45

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4

让我解释一下我的问题。

我在服务器上发布了一个带有.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

2 个答案:

答案 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 }
   );