私がやろうとしているのは、DB から特定の値を取得し、それを解析してビューに表示し、テーブルに表示することです。The model item passed into the dictionary is of type .... {Models.App}と同じ問題がありましたが、渡したのは {Models.App, System.Double}で、同様の方法で問題を解決しようとしました。したがって、基本的に、モデルに次のようなクラスを作成しました。
public Vehicle manur_name {get; set;}
public Vehicle manur_date { get; set; }
public Vehicle daily_hire_rate { get; set; }
しかし、それをlinqクエリのコントローラーで使用すると、エラーが発生します。
var s = from veh in db.Vehicles
join c in db.VehicleCategories on veh.vehicle_category_code equals c.
join m in db.Models on veh.model_code equals m.model_code
join man in db.Manufacturers on veh.manufacturer_code equals man.manufacturer_code
where c.vehicle_category_description == cat && m.body_style == b
select new CarClass {
manur_name = man.manufacturer_name,
manur_date = m.model_code,
daily_hire_rate = veh.daily_hire_rate};
エラーが表示されます:
エラー: タイプ 'decimal' を 'carRentalMVC.Models.Vehicle' に暗黙的に変換することはできません タイプ 'string' を 'carRentalMVC.Models.Vehicle' に暗黙的に変換することはできません タイプ 'string' を 'carRentalMVC.Models.Vehicle' に暗黙的に変換することはできません
問題を修正した後のコントローラーの内容は次のとおりです。
CarRentalDatabaseDataContext db = new CarRentalDatabaseDataContext();
public ActionResult Index(String cat, String b, String sort)
{
String day_hire = "Daily hire rate";
String man_date = "Manufacturing date";
string man_n = "Manufacturer's name";
var s = db.Vehicles.Where(c => c.Model.body_style == b)
.Select(u => new CarClassViewModel {
manur_name = u.Manufacturer.manufacturer_name,
model_code = u.model_code,
daily_hire_rate = u.daily_hire_rate,
manur_date = u.manufacturing_date
})
.Distinct(); //I don't need repeating data
//this is for sorting them, but I haven't implemented this in the view yet.
if (sort == man_n){s = s.OrderBy(c=>c.manur_name);}
else if (sort == man_date){s = s.OrderBy(c =>c.manur_date);}
else if (sort == day_hire){s = s.OrderBy(c => c.daily_hire_rate);}
else{s = s.OrderBy(c => c.daily_hire_rate);}
var v = s.Select(u => new CarClassViewModel
{
manur_name = u.manur_date,
model_code = u.model_code,
daily_hire_rate = u.daily_hire_rate,
}); //this is for returning values I need
return View(v); //I've tried View(v.ToList()) as well
}
これで、テーブルに空の行が返されます。メソッドのデータを解析していないことは問題ですか?