1. ホーム
  2. c#

[解決済み] Html.EnumDropdownListFor: デフォルトのテキストを表示する

2022-02-05 23:29:09

質問

私のビューでは enumdropdownlist (Asp.Net MVC 5.1 の新機能) を使用します。

@Html.EnumDropDownListFor(m => m.SelectedLicense,new { @class="form-control"})

上記のコードを実行すると、以下のenumのドロップダウンリストが表示されます。

public enum LicenseTypes
{
    Trial = 0,
    Paid = 1
}

しかし、デフォルトでは、ドロップダウンリストに値(カスタムテキスト)を持たせたいのです。 そして、これは私が試したものです。

@Html.EnumDropDownListFor(m => m.SelectedLicense,"Select a license" ,new { @class="form-control"})

しかし、問題は、これを実行すると、ドロップダウンリストが次のように表示されることです。 つまり、表示させたいテキストがデフォルトでは表示されないのです。 ユーザーが "select a license" を選択してフォームを送信しようとすると、 "select a license" というエラーは表示されますが、デフォルトテキストとしては表示されません。 何か変更する必要があるのでしょうか?

Ps: 画像はページを読み込んだ時のスクリーンショットです。デフォルトでは、Trialが選択されているように表示されます。

解決するには?

を変更してみてください。 IndexLicenseTypes から始まる 1 ではなく 0 を以下のようにします。

public enum LicenseTypes
{
    Trial = 1,
    Paid = 2
}

次に Range attribute を使用して、以下のように選択されたライセンスの種類を検証します。

public class YourViewModel
{
     //Other properties
     [Range(1,int.MaxValue,ErrorMessage = "Select a correct license")]
     public LicenseTypes LicenseTypes { get; set; }
}

最後に、あなたの見解で。

   @Html.EnumDropDownListFor(m => m.LicenseTypes,"Select a license",new { @class = "form-control"})
   @Html.ValidationMessageFor(m => m.LicenseTypes)