[英]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中,它将解决我的麻烦。 如果有实现的方法,或者有更好的方法,请提供帮助。
谢谢你们!
RouteLink
和ActionLink
使用RouteTable
来构建传出URL,因此需要修改以自定义URL的RouteTable
,而不是RouteLink
配置。
您可以通过多种方式执行此操作,但是使脱离数据库数据的URL的最灵活的方法是RouteBase
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.