2

让我简单解释一下我想要什么:我有一个名为Section.My section 模型的属性UrlSafe。我现在在 url 中显示我的 urlsafes 。这意味着我的 url 是这样的:

www.test.com/section/show/(the section's urlsafe goes here)

但我现在要做的是section/show从 url 中删除。我想让它像这样:

www.test.com/(my section's urlsafe)

更多信息:

1-我在 MVC3 下工作

2-我的模型是这样的:

public class Section
{
    public int SectionId { get; set; }
    public string Name { get; set; }
    public string Title { get; set; }
    public string MetaTag { get; set; }
    public string MetaDescription { get; set; }
    public string UrlSafe { get; set; }
    public string Header { get; set; }
    public string ImageName { get; set; }
}

3-我的链接是这样的:

<a href="@Url.Action("Show", "Section", new { sectionUrl = sectionItem.UrlSafe }, null)">@sectionItem.Name</a>

4-我的控制器如下所示:

public ActionResult Show(string sectionUrl)
{
    var section = sectionApp.GetSectionBySectionUrl(sectionUrl);
    return View(section);
}

5-最后我在 Global.asax 中有这些行:

routes.MapRoute(
    name: "Section",
    url: "{controller}/show/{sectionUrl}",
    defaults: new { controller = "Section", action = "Show", sectionUrl = UrlParameter.Optional }
);
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{name}",
    defaults: new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);

你的解决方案是什么?

谢谢。

4

2 回答 2

1

你试过这个吗?

routes.MapRoute(
    name: "Section",
    url: "{sectionUrl}",
    defaults: new { controller = "Section", action = "Show", sectionUrl =     UrlParameter.Optional }
);

完全同意@Levi Botelho 的评论

于 2013-06-11T08:09:57.553 回答
1

原则上你只需要改变这个:

routes.MapRoute(
    name: "Section",
    url: "{controller}/show/{sectionUrl}",
    defaults: new { controller = "Section", action = "Show", sectionUrl =
        UrlParameter.Optional }
);

对此:

routes.MapRoute(
    name: "Section",
    url: "{sectionUrl}",
    defaults: new { controller = "Section", action = "Show" }
);

请注意,我已从sectionurl组件中删除了默认值。这很重要,因为如果sectionurl是可选的,那么访问 test.com 会将您定向到 Section/Show,因为无参数 URL 将匹配该路由。将此参数设为强制意味着只有具有单个段的 url 将匹配此模式。这可能仍然会导致问题,但至少访问 test.com 仍会将您带到您的主页。

免责声明

弄乱路由可能会对应用程序的其余部分的功能产生严重影响。特别是,它可能会严重破坏对现有页面的导航。

我强烈建议你再看看你在做什么,看看是否有更好的方法来达到预期的结果。在不了解上下文的情况下,我必须说将 URL 存储在模型参数中似乎不是一个好主意。

于 2013-06-11T08:10:31.637 回答