繁体   English   中英

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

[英]Insert current URL into @Html.RouteLink parameter to build a link

我可能是错误的方式,因为我是.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,我都能得到是http://localhost/Subcategory如果我在@ Html.Routelink中将文本传递给controller =“ something”,它将显示http://localhost/something/Subcategory所以我一直在尝试获取与之匹配的当前URL必需的类别已成功传递到子类别@ Html.Routelink。

如果有一种方法可以将当前URL插入到子类别RouteLink中,它将解决我的麻烦。 如果有实现的方法,或者有更好的方法,请提供帮助。

谢谢你们!

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

您可以通过多种方式执行此操作,但是使脱离数据库数据的URL的最灵活的方法是RouteBase

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM