0

我可能会这样做错误的方式,因为我是一个.NET MVC的noob,但有没有一种方法来插入当前URL作为参数一个@ Html.Routelink?插入当前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中。

但是,要正确显示产品,为子类别视图生成的url需要为http://localhost/Category/Subcategory,无论我如何监听@ Html.RouteLink甚至@ Html.Actionlink,我所能得到的都是http://localhost/Subcategory如果我将文本传入@ Html.Routelink for controller =“something”,将显示http://localhost/something/Subcategory,因此我一直试图获取当前URL,该URL匹配传入子类别@ Html.Routelink的所需类别,但没有成功。

如果有一种方法可以将当前URL插入子类RouteLink,它将解决我的困境。如果有办法完成,或者有更好的办法,请帮忙。

谢谢大家!

回答

0

RouteLinkActionLink使用RouteTable打造出站URL,所以您需要修改自定义的网址,而不是RouteLink配置RouteTable

您可以通过多种方式做到这一点,但使数据库数据驱动的URL最灵活的方法是使用subclass RouteBase