第一个模型:
public class VehicleMake
{
[Key]
public int MakeId { get; set; }
public string Make { get; set; }
}
第二模特:
public class VehicleModel
{
[Key]
public int ModelId { get; set; }
public string Model { get; set; }
public DateTime Year { get; set; }
public int MakeId { get; set; }
public VehicleMake VehcileMake { get; set; }
}
如何将两个模型作为强类型视图传递。
我的观点有1)一个下拉列表,它绑定了来自VehicleMake类的make和makeid 2)一个文本框作为模型,从vehicleModle类
绑定请建议如何使用多个模型创建视图?
@model MvcApplication1.Data.ViewVMModel
....
<h2>CreateModel</h2>
<table>
<tr>
<td>@Html.Label("Select Make")</td>
<td>@Html.DropDownListFor(model=>model.VehicleMake,new SelectList(Model. "MakeId","Make")))</td>
</tr>
<tr>
<td>Enter Model </td>
<td>@Html.TextBoxFor(model=>model.VehcileModel)</td>
</tr>
</table>
答案 0 :(得分:0)
您正在编辑数据,因此第一步是创建视图模型(根据需要添加其他验证属性)。
public class VehicleVM
{
[Required(ErrorMessage = "...")]
public string Model { get; set; }
[Required(ErrorMessage = "...")]
public DateTime? Year { get; set; } // make nullable to protect against under-posting attacks
[Required(ErrorMessage = "...")]
[Display(Name = "Make")]
public int? SelectedMake { get; set; }
public IEnumerable<SelectListItem? MakesList { get; set; }
}
并在GET方法中,初始化视图模型的实例,填充它并将其传递给视图
var makes = db.VehicleMakes; // get the Makes from the database
VehicleVM vehicle = new VehicleVM()
{
MakesList = new SelectList(makes, "MakeId", "Make")
};
return View(vehicle);
并在视图中
@model VehicleVM
....
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.SelectedMake)
@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList)
@Html.ValidationMessageFor(m => m.SelectedMake)
@Html.LabelFor(m => m.Model)
@Html.TextBoxFor(m => m.Model)
@Html.ValidationMessageFor(m => m.Model)
....
将发回
public ActionResult Create(VehicleVM vehicle)
答案 1 :(得分:0)
您的Viewmodel应该是这样的
public VehicleModel VehicleModel { get; set; }
public List<VehicleMake> VehcileMakeList { get; set; }
并在您的视图中
@model MvcApplication1.Data.ViewVMModel
....
<h2>CreateModel</h2>
<table>
<tr>
<td>@Html.Label("Select Make")</td>
<td>@Html.DropDownListFor(model=>model.VehicleModel.MakeId ,new SelectList(Model.VehcileMakeList, "MakeId","Make")))</td>
</tr>
<tr>
<td>Enter Model </td>
<td>@Html.TextBoxFor(model=>model.VehcileModel.Model)</td>
<td>@Html.TextBoxFor(model=>model.VehcileModel.Year )</td>
</tr>
</table>
并在你的行动中
ViewVMModel vm = new ViewVMModel();
vm.VehcileMakeList = //get list of make
vm.VehicleModel = new VehicleModel();
return view(vm);