web-dev-qa-db-ja.com

ASP.net Coreでのドロップダウンの作成

Asp.netコアでドロップダウンを処理する方法を知っている人はいますか。新しいAsp.netのコアコンセプトを理解するのは非常に複雑になったと思います。 (Asp.net Coreは初めてです)。

DriverVehicleというモデルがあります。基本的に、マスターに多数の車両を作成し、それをドライバーにアタッチできます。そのため、ドライバーは車両に関連付けられます。

私の問題は、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>
7
Kirk

ドキュメントを見ると、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"  },
    };
}
}
22
Bill