1

我正在尝试为某个区域设置路线,并且我需要允许以下 URL:

  1. http://localhost/审查/设置
  2. http://localhost/Review/Setup/65
  3. http://localhost/Review/Setup/_AjaxGetMember?ReviewId=53

面积 = 评论 | 控制器 = 设置 | 行动=索引

因此,对于 URL,它们应该转到:

  1. http://localhost/Review/Setup/Index
  2. http://localhost/Review/Setup/Index/65
  3. http://localhost/Review/Setup/_AjaxGetMember?ReviewId=53

这是当前为该区域注册的路线。

context.MapRoute(
    "Review_default",
    "Review/{controller}/{action}/{id}",
    new
    {
        action = "Index",
        id = UrlParameter.Optional
    }
);

现在,我的第一个列表中的 1 和 3 有效,但 2 没有将 Index 放入 URL 中。我还可以添加什么来使这些 URL 正常工作,以便不必在 URL 中添加或显示索引?

谢谢你。

4

2 回答 2

0

解决了。我需要添加更多路线。可能有一种更优雅的方法可以做到这一点,但我刚刚测试过并且它有效。

context.MapRoute(
    "Review_default",
    "Review/{controller}/{id}",
    new
    {
        action = "Index",
        id = UrlParameter.Optional
    },
    new
    {
        id = @"\d*"
    }
);


context.MapRoute(
    "Review_default2",
    "Review/{controller}/{action}/{id}",
    new
    {
        action = "Index",
        id = UrlParameter.Optional
    },
    new
    {
        action = @"[A-Za-z]+",
        id = @"\d*"
    }
);

context.MapRoute(
    "Review_default3",
    "Review/{controller}/{action}/{id}",
    new
    {
        action = "Index",
        id = UrlParameter.Optional
    },
    new
    {
        action = @"_[A-Za-z]+",
        id = @"\d*"
    }
);
于 2012-04-08T07:12:47.123 回答
0

我没有测试它,但这就是我尝试的方式:

context.MapRoute(
    "Review_setup_directId",
    "Review/Setup/{id}",
    new
    {
        controller = "Setup",
        action = "Index",
        id = UrlParameter.Optional
    }
);
于 2012-04-08T06:17:45.207 回答