点击网址Shop/Checkout
请求找到了以下匹配的控制器类型:
- shopmvc.Controllers.HomeController
- shopmvc.Controllers.ProductsController
我的 HomeController.cs :
[Route("{action=index}")]
public class HomeController : Controller
{
[Route("Shop/Checkout")]
public ActionResult Checkout()
{
}
}
我的 ProductsController.cs :
[RoutePrefix("Shop")]
[Route("{action=index}")]
public class ProductsController : Controller
{
[HttpGet]
[Route("{brand}/{category}/{subcategory?}/{page:int?}")]
public ActionResult Index(string brand, string category, string subcategory, int? page, SortOptions currentSort = SortOptions.SinceDesc)
{
}
[HttpGet]
[ActionName("Details")]
[Route("{brand}/{category}/{productid}")]
public ActionResult Details(int productid)
{
}
}
我知道两条路线都有Shop
,但我不知道如何解决这个问题。这是我的共享布局中的剃刀代码:
<a href="@Url.Action("checkout", "Home" )">
答案 0 :(得分:1)
问题是“结帐”在brand
路由中作为ProductController
的参数有效。具有属性路由的路由没有内在顺序,因此您必须更加小心,以确保只有一个路由可以真正匹配URL。在这种情况下,您可以简单地执行以下操作:
[Route("{brand:regex((?!Checkout))}/...")]