0

我正在开发一个 ASP.NET MVC 项目。我需要能够映射这样的路线:

http://www.mysite.com/Products/网球鞋

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

通过添加路线映射,我可以正常工作。但是,有些“操作”需要在其中包含连字符。ASP.NET MVC 路由在我可以将它发送到我的操作之前尝试解析该连字符。我试图创建自己的自定义路由处理程序,但它甚至从未被调用过。一旦我有一个连字符,所有的路线都会被忽略,即使是我的自定义路线。

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

4

1 回答 1

2

查看 URL 并阅读您的描述,Tennis-Shoes在您的示例中听起来不应该是一个动作,而是一个 Route 参数。假设我们有以下控制器

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字符串使用不同的视图,但这只是一个基本示例。

于 2013-01-24T23:39:11.357 回答