将当前URL插入@ Html.RouteLink参数以构建链接

时间:2016-02-12 15:26:34

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

我可能会以错误的方式解决这个问题,因为我是.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);
    }

以下是我的部分观点,我试图将当前的类别网址添加到:

@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中。

但是,要正确显示产品,为子类别视图生成的网址必须为http://localhost/Category/Subcategory,无论我如何调整@ Html.RouteLink甚至是@ Html.Actionlink,我所能得到的只是http://localhost/Subcategory如果我将文本传入@ Html.Routelink for controller =&#34;那么&#34;这将显示http://localhost/something/Subcategory所以我一直试图获取与传递到子类别@ Html.Routelink所需的类别匹配的当前URL,但没有成功。

如果有办法将当前URL插入子类别RouteLink,它将解决我的困境。如果有办法实现,或者更好的方法,请帮助。

谢谢大家!

1 个答案:

答案 0 :(得分:0)

RouteLinkActionLink使用RouteTable构建外发网址,因此您需要修改RouteTable来自定义网址,而不是RouteLink配置。

您可以采用多种方式,但最灵活的方法是使用数据库数据驱动的网址为subclass RouteBase