使用最小和最大选择查询汽车价格

时间:2012-04-11 20:07:16

标签: asp.net-mvc-3 linq entity-framework

尝试在选定的价格范围内创建一个显示待售汽车的查询。

在控制器中,我有以下查询。

public ActionResult index (string searchString)
{
if (!String.IsNullOrEmpty(searchString))

 {
 Car = Car.Where(s => s.Car.CarName.Contains(searchString));

 }

MIn和Max的价格我无法实施。

    public ActionResult index ( int min, int max, string searchString )
    {
       if (!String.IsNullOrEmpty(searchString))

      {

    Car = Car.Where(s => s.Car.CarName.Contains(searchString)
    && s.Price >= min && s.Price <= max).OrderBy(s => s.Price);


  ViewBag.minprice = min;
  ViewBag.maxprice = max;

在视图中,我有一个相应的viewbags下拉列表(Min和Max)。

我收到错误:

可选参数必须是引用类型,可空类型,或者声明为可选参数。参数名称:参数

2 个答案:

答案 0 :(得分:0)

据推测,您仍在使用旧URL访问索引页面。这个旧的url不包含你的动作所需的min和max参数,所以它正在爆炸。此外,如果您为索引创建了自定义路由,请确保已将其重写为包含这两个新参数。

答案 1 :(得分:0)

这听起来像路由问题。您需要在默认路由之前向global.asax页面(RegisterRoutes方法)添加类似以下内容。

routes.MapRoute(
      "IndexCompare", // Route name
      "{controller}/{action}/{min}/{max}/{searchString}", // URL with parameters
      new
      {
          controller = "{controller}",
          action = "Index",
          min = 0,
          max = 0,
          searchString = UrlParameter.Optional
      } // Parameter defaults
);

因此,每次更改操作签名时,都需要确保有匹配它的路径。