我想配置一个带有可选标志的路由。
E.g。我希望能够调用产品页面并发送优惠和库存选项的可选过滤器(标志)。如果未指定标志,则应返回所有产品。
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呢。
答案 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)
{
//...
}