不同的动作方法取决于参数值?

时间:2014-02-04 23:02:53

标签: asp.net-mvc-4 asp.net-mvc-routing

我有两个这样的网址,

/products/home?subcat=abc
/products/home?subcat=xyz

我想在产品控制器中有两种操作方法 - homeabc和homexyz。

如何根据'subcat'参数的值构建路径以使其转到正确的操作方法?

PS:我没有更改网址格式的自由,它必须保持不变。

感谢。

1 个答案:

答案 0 :(得分:2)

由于您无法更改URL格式且只有一个或两个,最简单的方法是在Home / Index方法中进行某种类型的切换

public ActionResult Index(string subcat){
  switch(subcat.ToLower())[
      case "abc":
         return RedirectToAction("abc");
      case "xyz":
         return RedirectToAction("xyz");
      default:
         return RedirectToAction("UnknownCategory", "Errors");
  }
}

不幸的是,路由引擎不允许您根据查询字符串参数(?)进行路由。唯一的另一种可能是网址重写。