public class MyViewModel
{
[Required]
public MyEnum MyEnum { get; set; }
}
public enum MyEnum
{
First,
Second
}
それから私の見解では..
<form action="/Go/Here" method="post">
<select asp-for="MyEnum" asp-items="Html.GetEnumSelectList<MyEnum>()">
<option selected="selected" value="">Please Select..</option>
</select>
<button type="submit" value="Submit">Submit</button>
私は、最初の値をデフォルトにせずに選択を必要とする生成された列挙フォームを作成しようとしています。ただし、現在は
Please Select..
の間に送信できますが選択され、dotnetが
MyEnum.First
と考えるが選択されます。デフォルトの列挙値を追加し、デフォルトの列挙値が選択されていないことを確認せずにこれを行うことは可能ですか?それはとてもハッキーだからです。
関連した質問
- コントローラパスの命名はどのように機能しますか?
- Net CoreMVCでPOSTする方法
- 複数のjsonファイルから似たようなデータを異なる形式で配置するにはどうすればよいですか?
- OpenXML:Wordファイルを読み取り、テキストを追加して、ASPNet Webアプリケーションに保存せずに開きます
- netlifyでdotnetコアアプリを公開するにはどうすればよいですか?
- NET Core 21の汎用ホストによる正常なシャットダウン
- nullでない場合にのみ、ブール値のnull以外の値を割り当てます
- AspNet Core Controller/ServiceProviderScopeを使用したAsyncLocal
- HttpClientは、Dockerホスト名をローカルで解決するときに時間がかかりすぎる
舞台裏では、列挙型は数字です。ページをレンダリングすると、「選択してください。」ではなく「最初」のオプションが選択されていることがわかります。これは、テキスト「First」を含むオプションの値が
0
であるためです。 0はint
のデフォルト値です タイプ。そのため、オプションとして「Please select」を指定してフォームを送信すると、「MyEnum」のフォームデータ項目は空/ nullになりますが、型はnullを許可しない型であるため、モデルバインダーは最初のenumオプションを設定します。タイプをヌル可能列挙型に変更する必要があります。
ユーザーが「選択してください」を選択してフォームを送信すると、値は
NULL
になります 最初のenum(0)の代わりに