我正在尝试在同一视图页面中比较两辆汽车的详细信息。我不想使用 ViewBag 方法将我的数据发送到查看,因为我从很多人那里听说这不是推荐的数据传递方式。
我在这件事上找不到任何信息。我试图在一个查询中发送两辆车的详细信息,但这会非常复杂,而且我没有成功区分我视图中的第一辆车和第二辆车。
这是我的观点的缩写形式:
@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 填充下拉列表。现在我试图在两个不同的列中展示两个不同的汽车品牌,以便详细比较汽车。
我的问题:从同一个模型类中获取两个查询并将其发送到视图的最佳方法是什么?
谢谢你。