我正在开发一个ASP.NET MVC项目。我需要能够映射这样的路线:
http://www.mysite.com/Products/Tennis-Shoes
URL(Tennis-Shoes“)的”Action“部分可能是一个可能的列表之一。我不想在我的控制器中为每个创建一个单独的Action方法。我想映射它们所有的一个Action方法,我将处理从那里显示的视图。
通过添加路由映射,我可以正常工作。但是,有些“动作”需要在其中加上连字符。 ASP.NET MVC路由尝试解析该连字符,然后才能将其发送到我的操作。我试图创建自己的自定义路由处理程序,但它甚至从未调用过。一旦我有一个连字符,所有路线都会被忽略,甚至是我的自定义路线。
有什么建议吗?有关连字符情况的详细信息?谢谢你。
答案 0 :(得分:2)
查看网址并阅读说明,示例中的Tennis-Shoes
听起来不应该是一个操作,而是一个Route参数。假设我们有以下控制器
public class ProductsController : Controller
{
public ActionResult Details(string product)
{
// do something interesting based on product...
return View(product);
}
}
Details
操作将处理
http://www.mysite.com/Products/{product}
使用以下路线
routes.MapRoute(
null,
"Products/{product}",
new
{
controller = "Products",
action = "Details"
});
您可能决定使用基于product
字符串的其他视图,但这只是一个基本示例。