【问题标题】:Insert current URL into @Html.RouteLink parameter to build a link将当前 URL 插入 @Html.RouteLink 参数以构建链接
【发布时间】:2016-02-12 15:26:34
【问题描述】:

由于我是 .NET MVC 的菜鸟,因此我可能会以错误的方式处理此问题,但是有没有办法将当前 url 作为参数插入到 @Html.Routelink 中?

我将部分视图传递到页面以显示基于当前类别的子类别列表。

这是我的控制器逻辑:

   public PartialViewResult SubcategoryMenu(string category)
    {
        IEnumerable<string> subcategories = repository.Products
            .Where(x => x.SubCategory.Category.CategoryName == category)
            .Select(x => x.SubCategory.SubCategoryName)
            .Distinct()
            .OrderBy(x => x);

        return PartialView(subcategories);
    }

这是我试图将当前类别 url 放入的部分视图:

@model IEnumerable<string>
@foreach (var link in Model)
    {
        @Html.RouteLink(link, new
            {
                controller = "Product",
                action = "List",
                category = "INSERT CURRENT URL HERE",
                subcategory = link,
                page = 1
             }, new { @class = "btn btn-block btn-default btn-lg" })
     }

当页面显示时,所有产品和类别都列出来了,没问题。当我点击一个类别时,URL 是http://localhost/Category2,这正是我想要的。

单击一个类别,然后所有关联的子类别都会根据控制器中的 linq 查询显示在单独的 div 中。

但是,为了正确显示产品,为子类别视图生成的 url 需要是 http://localhost/Category/Subcategory 并且无论我如何调整 @Html.RouteLink 甚至 @Html.Actionlink,我能得到的只是 @987654325 @ 如果我将文本传递到 @Html.Routelink for controller= "something" 将显示 http://localhost/something/Subcategory 所以我一直在尝试获取与传递到子类别 @Html.Routelink 的所需类别匹配的当前 URL,没有成功。

如果有办法将当前 URL 插入到子类别 RouteLink 中,它将解决我的问题。如果有方法可以完成,或者有更好的方法,请帮忙。

谢谢大家!

【问题讨论】:

    标签: asp.net-mvc linq asp.net-mvc-routing asp.net-mvc-partialview routelink


    【解决方案1】:

    RouteLinkActionLink 使用 RouteTable 构建传出 URL,因此您需要修改 RouteTable 来自定义 URL,而不是 RouteLink 配置。

    您可以通过多种方式执行此操作,但最灵活的创建从数据库数据驱动的 URL 的方法是 subclass RouteBase

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2011-09-02
      • 1970-01-01
      相关资源
      最近更新 更多