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

How access a site view (mvc .net) passing the view name by url? (for redirect to route)

让我解释一下我的问题。

我有一个在服务器上发布 .aspx 页面(网络表单)的网站,例如:www.mysite.com.

几个月前,它发起了一场大规模的数字营销活动,其中最重要的是联系表格,例如:www.mysite.com/contact.aspx.

现在(忘掉razon),项目被迁移了一个mvc项目。然后,通过 www.mysite.com/contact 访问新的联系表格。就是说,按路由,而不是按页面。

我需要一种从 www.mysite.com/contact.aspx(link 发送到 campaing)重定向到 www.mysite.com/contact 在 MVC 项目中。意思是:没有服务器http或dns配置。

我尝试创建一个页面 contact.aspx。在我的 mvc 项目上并重定向到路由 /contact,但不起作用。我猜想是因为 MVC 处理路由而不是视图(在本例中为 .aspx)。

有人可以帮助我提供任何想法或指导吗?记住,不是在服务器配置上工作,只是在 mvc 项目上编码。

项目ASP.net MVC4 和框架 4.5

我想我知道你想做什么...

将 Contact.aspx 添加到 MVC 应用程序的根目录。

然后在后面的代码中,添加一个RedirectToRoute调用Contact.aspx.cs中的Page_Load事件,像这样:

(假设您的新 Contact Razor 视图名为 'Index' 并且位于 '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");
    }

您只能在当前 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 }
   );