【发布时间】:2013-04-30 15:29:17
【问题描述】:
我的问题分为两部分:
1
我的 MVC 项目的文件夹结构如下:
我想在“创建”页面中创建一个链接到“储蓄”WebForm
我已尝试将此添加到 RouteConfig:
routes.MapPageRoute(
"idea-savings-calculator",
"Idea/Savings",
"~/Views/Idea/Savings.aspx"
);
但是默认的 MVC MapRoute 功能:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
首先映射到 URL localhost:xxxx/Idea/Savings 并引发错误,因为在 Idea 控制器 Savings 中没有名为 Savings 的操作。
编辑:RouteConfig 类:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.MapPageRoute(
"idea-savings-calculator",
"Idea/Savings",
"~/Views/Idea/Savings.aspx"
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
2
以下是“创意”控制器 URL 的“创建”视图的剪辑:http://localhost:51946/Idea/Create
(红色框表示我想要的储蓄链接WebForm)
储蓄WebForm 只是一个简单的计算器;我如何将计算中的产品传递回上面的“创建”页面,以便它可以显示在底部的文本框中?我猜它会作为Idea Controller可以匹配的url中的参数?但是...如何?
谢谢!
【问题讨论】:
-
您的 MapPageRoute 是否位于默认 MVC MapRoute 之前?它需要默认为贪婪。
-
如果我把 MapPageRoute 放在第一位,如果我尝试访问 Idea Controller 下的任何页面,我会被重定向到
http://localhost:51946/Idea/Savings?action=Index&controller=Idea -
您是否查看过Route Debugger 或Glimpse 以了解路由发生了什么?我成功地使用与您的路由非常相似的路由将友好的 url 路由到旧的 asp.net 网络表单。也许用你完整的 RegisterRoutes 方法更新你的帖子。
-
忘了问了,你的路由开头有
routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");吗? -
你好科林,感谢您的回复。我已经更新了帖子。
标签: asp.net-mvc asp.net-mvc-4 webforms