1

说路由不是我的强项是轻描淡写,所以请多多包涵。

我的一个页面中有这个链接,我需要我的 MVC 路由来获取它并将其映射到

“MyArea”区域“MessagesController”控制器“Inbox”方法

http://localhost/MyArea/messages/list.asp?pjid=&box=in&sf=mesibox

到目前为止我想出的并没有削减它。

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.IgnoreRoute("favicon.ico");

routes.MapRoute(
    "Messages", 
    "messages/list.asp", 
    new
        {
            controller = "Messages", 
            action = "Inbox"
        });

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new
        {
            controller = "Account",
            action = "LogOn",
            id = UrlParameter.Optional
        }
    );

任何帮助,将不胜感激。

谢谢你,斯蒂芬

更新:达林在这里回答了一个类似的问题How to route legacy QueryString parameters in ASP.Net MVC 3? 这样就可以处理查询字符串参数。现在要弄清楚主要部分。

4

1 回答 1

1

您似乎已经定义了一个区域,因此您可以尝试在该区域的路由配置中添加该路由,而不是在 global.asax 中:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "MyArea_default",
        "MyArea/messages/list.asp",
        new { controller = "messages", action = "inbox" }
    );

    context.MapRoute(
        "MyArea_default",
        "MyArea/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
}
于 2012-06-22T06:00:42.420 回答