1

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

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

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

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

 }

价格的最小值和最大值我无法实施。

    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;

在视图中,我有一个相应的视图袋(最小和最大)下拉列表。

我收到一个错误:

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

4

2 回答 2

0

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

于 2012-04-11T21:29:40.947 回答
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
);

所以每次你改变一个动作签名时,你需要确保你有一个匹配它的路由。

于 2012-04-12T00:59:30.070 回答