Asp.netコアでドロップダウンを処理する方法を知っている人はいますか。新しいAsp.netのコアコンセプトを理解するのは非常に複雑になったと思います。 (Asp.net Coreは初めてです)。
Driver
、Vehicle
というモデルがあります。基本的に、マスターに多数の車両を作成し、それをドライバーにアタッチできます。そのため、ドライバーは車両に関連付けられます。
私の問題は、2つの異なるモデルを組み合わせるために、一部の領域でviewmodelも使用していることです(デフォルトのテンプレートからはほとんど理解されていませんでした)
私の問題は、ASP.net Coreが非常に最新であり、利用可能なチュートリアルやQ/Aがあまりないため、次のステップが何であるかわからないことです。
ドライバーモデル
public class Driver
{
[Required]
public int Id { get; set; }
[Required]
public string ApplicationUserId { get; set; }
[Required]
public int VehicleId { get; set; }
[Required]
public string Status { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public virtual Vehicle Vehicle { get; set; }
}
車両モデル
public class Vehicle
{
[Required]
public int Id { get; set; }
[Required]
public string Make { get; set; }
public string Model { get; set; }
[Required]
public string PlateNo { get; set; }
public string InsuranceNo { get; set; }
}
ドライバーのViewModel
public class DriverViewModel
{
[Required]
[Display(Name = "ID")]
public int ID { get; set; }
[Required]
[Display(Name = "User ID")]
public string ApplicationUserId { get; set; }
[Required]
[Display(Name = "Vehicle ID")]
public IEnumerable<Vehicle> VehicleId { get; set; }
//public string VehicleId { get; set; }
[Required]
[Display(Name = "Status")]
public string Status { get; set; }
}
これが私の見解です
<div class="col-md-10">
@*<input asp-for="VehicleId" class="form-control" />*@
@Html.DropDownList("VehicleId", null, htmlAttributes: new { @class = "form-control"})
<span asp-validation-for="VehicleId" class="text-danger" />
</div>
ドキュメントを見ると、asp.netコアはHTMLヘルパーからタグヘルパーの使用に移行しているようです。次のリンクが役立ちます
https://docs.asp.net/en/latest/mvc/views/working-with-forms.html#the-select-tag-helper
具体的に
@model CountryViewModel
<form asp-controller="Home" asp-action="Index" method="post">
<select asp-for="Country" asp-items="Model.Countries"></select>
<br /><button type="submit">Register</button>
</form>
バインドするモデル属性を参照する「asp-for」の使用と、選択リスト項目のリストのモデル属性ソースを参照する「asp-items」の使用と、それが選択タグに適用される方法に注意してください。
ドキュメントで使用されるサンプルモデルは、完全性のために以下で参照されます。
namespace FormsTagHelper.ViewModels
{
public class CountryViewModel
{
public string Country { get; set; }
public List<SelectListItem> Countries { get; } = new List<SelectListItem>
{
new SelectListItem { Value = "MX", Text = "Mexico" },
new SelectListItem { Value = "CA", Text = "Canada" },
new SelectListItem { Value = "US", Text = "USA" },
};
}
}