Asp.net mvc。使用尾部斜杠进行路由

时间:2015-06-21 08:31:20

标签: asp.net-mvc routes

我想要两条路线,例如:

http://localhost:1227/Product

http://localhost:1227/Category/

尾随斜线是唯一的区别。

在第一种情况下,我想在其他情况下显示关于类别的产品的信息。 "产品"和"类别"是某些产品或类别的名称

是否可以实施?

我的方法:

路线:

routes.MapRoute("category route", "{name2}", new { controller = "test", action = "GoToView2" }, new { name2 = ".*/?" });
routes.MapRoute("product route", "{name}", new { controller = "test", action = "GoToView1"});

控制器:

public class TestController : Controller
    {
        //
        // GET: /Test/
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GoToView1(string name)
        {
            // call to db to get some information about product
            return View((object) name);
        }

        public ActionResult GoToView2(string name2)
        {
            // call to db to get some information about category
            return View((object)name2);
        }
    }

索引视图:

...

<br/>
<a href="@Url.Action("GoToView1", new { name = "Prouct"} )">Show proudct</a>
<br/>
<a href="@Url.Action("GoToView2", new { name2 = "Category" + "/"  } )">Show category</a>

...

但我只看到&#34; GoToView2&#34;被称为两个链接。

任何想法如何解决?

谢谢,

1 个答案:

答案 0 :(得分:0)

为什么要这样做?在你的情况下你必须完全不同的控制器,即ProductCategory和两个不同的动作,即使我们可以实现相同的URL来调用基于斜杠的不同动作,它将是一个代码气味(糟糕的设计),在你的情况下,你可以简单地调用TestController/GoToView1TestController/GoToView2,如果不是这样,请告诉我们你要解决的问题,也许会有更好的方法。