2012-04-11 12 views
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; 

ビューには、ビューバッファ(MinおよびMax)の対応するドロップダウンリストがあります。

私はエラーが発生します:

オプションのパラメータは参照型、NULL可能タイプ、またはオプションparameter.Parameter名として宣言されている必要があります。おそらくパラメータ

+1

あなたは何を持っているのですか? –

+0

クエリが奇妙に見えます。なぜ車名クエリに 's.Car.CarName'というコレクションへのアクセス構文があり、その後に直接メンバーアクセス' s.Price'がありますか? PriceとCarNameのメンバーを持つ車オブジェクトではないはずですか? –

答えて

0

、あなたはまだ使用していますインデックスページにアクセスするための古いURLこの古いURLには、アクションに必要な最小引数と最大引数が含まれていないため、爆発しています。また、インデックスのカスタムルートを作成した場合は、これら2つの新しい引数を含むように書き直してください。

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 
); 

ですから、アクションの署名を変更するたびに、あなたはそれに一致するようにルートを持っていることを確認する必要があります。

関連する問題