如何访问通过 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 }
);
让我解释一下我的问题。
我有一个在服务器上发布 .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 }
);