同じビュー ページで 2 台の車の詳細を比較しようとしています。ViewBag メソッドを使用してデータをビューに送信したくありません。多くの人から、データを渡す方法として推奨されていないと聞いたからです。
この件に関する情報は見つかりませんでした。両方の車の詳細を 1 つのクエリで送信しようとしましたが、非常に複雑になり、View で最初の車と 2 番目の車を区別することができませんでした。
これが私の見解の短縮形です:
@model IEnumerable<Cars.Models.Car>
@using (Html.BeginForm("Comparison", "Home", FormMethod.Post,
new { id = "ComparisonFormID" }))
{
<table>
<tr>
<td>
<p>First car:</p>
@Html.DropDownList("carMake","All Makes")
</td>
<td>
<p>Second car:</p>
@Html.DropDownList("carMake2", "All Makes")
<button type="submit" name="submit" value="search" id="CompareID">Compare</button>
</td>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
<label>Make:</label>
</td>
<td>
<p>@Html.DisplayFor(modelItem => item.Make)</p> @*First car's information*@
</td>
<td>
<p>@Html.DisplayFor(modelItem => item.Make)</p> @*Second car's information*@
</td>
</tr>
}
</table>
}
私のモデルクラスの短縮版:
public class Car
{
public int ID { get; set; }
public String Make { get; set; }
}
そして最後に私のコントローラー:
public ActionResult Comparison(String carMake, String carMake2)
{
var makeLstBase = new List<String>();
var makeQryBase = from m in db.Car
orderby m.Make
select m.Make;
makeLstBase.AddRange(makeQryBase.Distinct());
ViewBag.carMake = new SelectList(makeLstBase);
ViewBag.carMake2 = new SelectList(makeLstBase);
var cars = from m in db.Car
orderby m.Make
where m.Make == carMake || m.Make == carMake2
select m;
return View(cars);
}
ページの読み込み時にドロップダウンリストを埋めるために ViewBag を使用していることに注意してください。ここで、車を互いに詳細に比較するために、2 つの異なる車のブランドを 2 つの異なる列に表示しようとしています。
私の質問: 同じモデル クラスから 2 つのクエリを取得してビューに送信する最良の方法は何ですか?
ありがとうございました。