如何在MVC 1.0路由中配置可选标志

时间:2010-05-06 13:24:42

标签: .net asp.net-mvc

我想配置一个带有可选标志的路由。

E.g。我希望能够调用产品页面并发送优惠和库存选项的可选过滤器(标志)。如果未指定标志,则应返回所有产品。

http://localhost/products

http://localhost/products/onlyOnOffer

http://localhost/products/onlyInStock

http://localhost/products/onlyInStock/onlyOnOffer

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetProducts(bool onlyInStock, bool onlyOnOffer)
{
    //...
}

我如何配置路线?它甚至可以在MVC 1.0中使用吗?那么MVC 2.0呢。

2 个答案:

答案 0 :(得分:2)

最好使用查询字符串。请注意,该路径应该描述资源 - 在这种情况下,用户想要获取的资源是产品页面本身。像“只有库存”和“仅提供”这样的属性是修改器,它们只改变资源向最终用户显示的方式;他们不会改变您获得的资源是产品页面的事实。

答案 1 :(得分:1)

我看到两种方式:

1)设置4个不同的动作:

   [AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
    //...
}

    [AcceptVerbs(HttpVerbs.Get)]
public ActionResult IndexOnOffer()
{
    //...
}

    [AcceptVerbs(HttpVerbs.Get)]
public ActionResult IndexInStock()
{
    //...
}

    [AcceptVerbs(HttpVerbs.Get)]
public ActionResult IndexInStockAndOnOffer()
{
    //...
}

2)在查询字符串中发送2个参数:      http://localhost/products/?onlyInStock=false&onlyOnOffer=true

 [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult GetProducts(bool? onlyInStock, bool? onlyOnOffer)
    {
       //...
    }