Asp.net mvc 带连字符的ASP.NET MVC动态操作

Asp.net mvc 带连字符的ASP.NET MVC动态操作,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,我正在从事一个ASP.NETMVC项目。我需要能够绘制这样的路线图: 其中URL(网球鞋)的“动作”部分可能是一个可能性列表中的一个。我不想在控制器中为每个选项创建单独的动作方法。我想将它们全部映射到一个动作方法,我将处理从那里显示的视图 通过添加路由映射,我可以很好地实现这一点“这需要有一个连字符。ASP.NET MVC路由正在尝试分析该连字符,然后才能将其发送到我的操作。我曾尝试创建自己的自定义路由处理程序,但从未调用过。一旦我有了一个连字符,所有的路线都会被忽略,甚至是我的自定义路线 有

我正在从事一个ASP.NETMVC项目。我需要能够绘制这样的路线图:

其中URL(网球鞋)的“动作”部分可能是一个可能性列表中的一个。我不想在控制器中为每个选项创建单独的动作方法。我想将它们全部映射到一个动作方法,我将处理从那里显示的视图

通过添加路由映射,我可以很好地实现这一点“这需要有一个连字符。ASP.NET MVC路由正在尝试分析该连字符,然后才能将其发送到我的操作。我曾尝试创建自己的自定义路由处理程序,但从未调用过。一旦我有了一个连字符,所有的路线都会被忽略,甚至是我的自定义路线


有什么建议吗?有关连字符情况的详细信息?谢谢。

查看URL并阅读您的描述,在您的示例中,
网球鞋
听起来不应该是动作,而是路线参数。假设我们有以下控制器

public class ProductsController : Controller
{
    public ActionResult Details(string product)
    {
        // do something interesting based on product...

        return View(product);
    }
}
Details
操作将处理以下行中的任何URL:

http://www.mysite.com/Products/{product}
使用以下路线

routes.MapRoute(
   null,
   "Products/{product}",
   new
   {
       controller = "Products", 
       action = "Details"
   });

您可能会根据
产品
字符串决定使用不同的视图,但这只是一个基本示例。

这就是我现在使用的路线图。我用了不正确的术语。然而,主要问题仍然存在。如果{product}有连字符,则此路由不起作用。我如何解决这个问题?谢谢。您对
{product}
有任何路线限制吗?它应该在没有任何约束的情况下工作。不,根本没有路由约束。如果我删除连字符,它工作正常。使用连字符时,不进行路由,并且我得到一个“未找到资源”错误。您必须确保此路由显示在任何常规路由之上。路线匹配并不寻找最佳匹配,而是在第一次匹配时停止,所以顺序很重要。我刚刚在一个新的MVC4应用程序中尝试了上面的方法,效果很好,所以它一定是应用程序中的其他东西。+1表示“在您的示例中,网球鞋听起来不应该是动作,而是路线参数”