使用下拉菜单选择
Using DropDown Menu Selection
我是 MVC Core 的新手,我想使用 ViewModel 做一个来自数据库的下拉列表示例。
我的例子是:
Table ( Car ): CarId,CarName,CarBrand。 [FK(ColorId), FK(UserID)]
Table(颜色):使用 ColorId,Color
public class Car
{
[Key]
public int CarId { get; set; }
[Required]
public string CarBrand { get; set; }
[Required]
public string CarName { get; set; }
//--------Foreign[ColorID]--------Foreign[UserId]--------------------------------
// Foreign key to customer
public virtual Color Color { get; set; } // Dropdown List
public ApplicationUser ApplicationUser { get; set; } // Logged in UserId
}
public class Color
{
[Key]
public int ColorId { get; set; }
[Required]
public string ColorName { get; set; }
}
在数据库中保存几种颜色:1=红色,2=黄色,3=绿色
这是我的观点
@model DropDownListOtherModel.Models.Car
<div ">
<div class="form">
<form class="Car-form" method="Post" asp-controller="Car" asp-action="Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
@*<label asp-for="FullName"></label>*@
<input asp-for="CarBrand" placeholder=" Car Brand" />
<span asp-validation-for="CarBrand" class="text-danger"></span>
</div>
<div class="form-group">
@*<label asp-for="FullName"></label>*@
<input asp-for="CarName" placeholder=" Car Name" />
<span asp-validation-for="CarName" class="text-danger"></span>
</div>
<div class="form-group">
<label for="cars">Choose a Color:</label>
<br />
<select name="cars" id="cars" asp-for="Color">
<option value="1">RED</option>
<option value="2">YELLOW</option>
<option value="3">GREEN</option>
<option value="4">BLACK</option>
<option value="5">WHITE</option>
</select>
</div>
<button class="btn btn-success" type="submit">submist</button>
</form>
</div>
</div>
在我的视图中,我应该显示带有 2 个输入 CarName、CarBrand 和 3 种下拉菜单颜色的表单,当我保存时,它应该附在表单上。
首先我应该如何在 Select 列表中显示颜色,
其次,我是否应该更新 Save 方法以包含 colorID?
将 ColorId 添加到汽车 class
public class Car
{
[Key]
public int CarId { get; set; }
[Required]
public string CarBrand { get; set; }
[Required]
public string CarName { get; set; }
public int ColorId { get; set; }
[ForeignKey(nameof(ColorId))]
[InverseProperty("Cars")]
public virtual Color Color { get; set; }
public ApplicationUser ApplicationUser { get; set; } // Logged in UserId
}
public class Color
{
[Key]
public int ColorId { get; set; }
[Required]
public string ColorName { get; set; }
[InverseProperty(nameof(Car.Color))]
public virtual ICollection<Car> Cars{ get; set; }
}
从 select
中删除 ID 和名称
<select asp-for="ColorId">
<option value="0">Select Color</option>
<option value="1">RED</option>
<option value="2">YELLOW</option>
<option value="3">GREEN</option>
<option value="4">BLACK</option>
<option value="5">WHITE</option>
</select>
动作
[HttpPost]
public ActionResult Create(Car car)
{
....your code
}
你可以这样试试,
型号:
public class CarColorViewModel
{
public String CarName { get; set; }
public List<Color> colors { get; set; }
}
控制器:
public IActionResult LoadDropDownFromDatabase()
{
// Get your database value here, then bind to list I am binding here a seed value.
var color = new List<Color>()
{
new Color(){ ColorName = "Select Color",ColorId =1},
new Color(){ ColorName = "Red",ColorId =2},
new Color(){ ColorName = "Blue",ColorId =3},
new Color(){ ColorName = "Green",ColorId =4}
};
var model = new CarColorViewModel();
model.colors = color;
return View(model);
}
查看:
@model CarColorViewModel
@{ ViewBag.Title = " "; }
<h2>Load DropDown From Backend</h2>
@using (Html.BeginForm("LoadDropDownFromDatabase", "Whosebug"))
{
<table class="table table-sm table-bordered table-striped">
<tr><th>Car Name </th><td > @Html.TextBoxFor(r => Model.CarName, new { @class = "form-control" })</td></tr>
<tr><th>Select Color</th><td> @Html.DropDownListFor(m => m.colors, new SelectList(Model.colors, "ColorId", "ColorName"), new { @class = "form-control" })</tr>
</table>
<input id="Button" type="submit" value="Submit" />
}
输出:
希望这能帮助您实现目标。
我是 MVC Core 的新手,我想使用 ViewModel 做一个来自数据库的下拉列表示例。
我的例子是:
Table ( Car ): CarId,CarName,CarBrand。 [FK(ColorId), FK(UserID)] Table(颜色):使用 ColorId,Color
public class Car
{
[Key]
public int CarId { get; set; }
[Required]
public string CarBrand { get; set; }
[Required]
public string CarName { get; set; }
//--------Foreign[ColorID]--------Foreign[UserId]--------------------------------
// Foreign key to customer
public virtual Color Color { get; set; } // Dropdown List
public ApplicationUser ApplicationUser { get; set; } // Logged in UserId
}
public class Color
{
[Key]
public int ColorId { get; set; }
[Required]
public string ColorName { get; set; }
}
在数据库中保存几种颜色:1=红色,2=黄色,3=绿色
这是我的观点
@model DropDownListOtherModel.Models.Car
<div ">
<div class="form">
<form class="Car-form" method="Post" asp-controller="Car" asp-action="Save">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
@*<label asp-for="FullName"></label>*@
<input asp-for="CarBrand" placeholder=" Car Brand" />
<span asp-validation-for="CarBrand" class="text-danger"></span>
</div>
<div class="form-group">
@*<label asp-for="FullName"></label>*@
<input asp-for="CarName" placeholder=" Car Name" />
<span asp-validation-for="CarName" class="text-danger"></span>
</div>
<div class="form-group">
<label for="cars">Choose a Color:</label>
<br />
<select name="cars" id="cars" asp-for="Color">
<option value="1">RED</option>
<option value="2">YELLOW</option>
<option value="3">GREEN</option>
<option value="4">BLACK</option>
<option value="5">WHITE</option>
</select>
</div>
<button class="btn btn-success" type="submit">submist</button>
</form>
</div>
</div>
在我的视图中,我应该显示带有 2 个输入 CarName、CarBrand 和 3 种下拉菜单颜色的表单,当我保存时,它应该附在表单上。
首先我应该如何在 Select 列表中显示颜色, 其次,我是否应该更新 Save 方法以包含 colorID?
将 ColorId 添加到汽车 class
public class Car
{
[Key]
public int CarId { get; set; }
[Required]
public string CarBrand { get; set; }
[Required]
public string CarName { get; set; }
public int ColorId { get; set; }
[ForeignKey(nameof(ColorId))]
[InverseProperty("Cars")]
public virtual Color Color { get; set; }
public ApplicationUser ApplicationUser { get; set; } // Logged in UserId
}
public class Color
{
[Key]
public int ColorId { get; set; }
[Required]
public string ColorName { get; set; }
[InverseProperty(nameof(Car.Color))]
public virtual ICollection<Car> Cars{ get; set; }
}
从 select
中删除 ID 和名称<select asp-for="ColorId">
<option value="0">Select Color</option>
<option value="1">RED</option>
<option value="2">YELLOW</option>
<option value="3">GREEN</option>
<option value="4">BLACK</option>
<option value="5">WHITE</option>
</select>
动作
[HttpPost]
public ActionResult Create(Car car)
{
....your code
}
你可以这样试试,
型号:
public class CarColorViewModel
{
public String CarName { get; set; }
public List<Color> colors { get; set; }
}
控制器:
public IActionResult LoadDropDownFromDatabase()
{
// Get your database value here, then bind to list I am binding here a seed value.
var color = new List<Color>()
{
new Color(){ ColorName = "Select Color",ColorId =1},
new Color(){ ColorName = "Red",ColorId =2},
new Color(){ ColorName = "Blue",ColorId =3},
new Color(){ ColorName = "Green",ColorId =4}
};
var model = new CarColorViewModel();
model.colors = color;
return View(model);
}
查看:
@model CarColorViewModel
@{ ViewBag.Title = " "; }
<h2>Load DropDown From Backend</h2>
@using (Html.BeginForm("LoadDropDownFromDatabase", "Whosebug"))
{
<table class="table table-sm table-bordered table-striped">
<tr><th>Car Name </th><td > @Html.TextBoxFor(r => Model.CarName, new { @class = "form-control" })</td></tr>
<tr><th>Select Color</th><td> @Html.DropDownListFor(m => m.colors, new SelectList(Model.colors, "ColorId", "ColorName"), new { @class = "form-control" })</tr>
</table>
<input id="Button" type="submit" value="Submit" />
}
输出:
希望这能帮助您实现目标。