申し訳ありませんが、ほとんどの検索で古い MVC コードが表示されます。どんな助けでも大歓迎です。
タグ ヘルパーを使用する MVC 6 では、一連のチェックボックスをどのようにコーディングしますか。
- ラベルにタグヘルパーを使用して、クリックするとチェックされた値が切り替わるようにします
- チェックした値を IsOptionSelected プロパティに保存 (バインドしますか?)
- [送信] をクリックした後、これらのチェックされた値をコントローラーに渡します。
?
ラベル付きのチェックボックスを正しく表示できましたが、モデルを介してチェックされた値をコントローラーに戻す方法がわかりません。現在、IsOptionSelected の値は false として返されています。
また、ラベルの html ヘルパーを機能させることができましたが、タグ ヘルパーは機能しませんでした。また、これらすべてを間違ってコーディングしている可能性があるため、ヒントが役立ちます。
これが私がこれまでに持っているものです:
画面:
実在物:
public class PhoneOption
{
public bool IsOptionSelected { get; set; } = false;
public int OptionId { get; set; }
public string OptionName { get; set; }
}
モデル:
[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }
. . . .
PhoneOptions = repository.GetPhoneOptions();
リポジトリ:
public IEnumerable<PhoneOption> GetPhoneOptions()
{
IEnumerable<PhoneOption> options = new[]
{
new PhoneOption { OptionId = 1, OptionName = "Phone Case", IsOptionSelected = false },
new PhoneOption { OptionId = 2, OptionName = "Screen Protector", IsOptionSelected = false },
new PhoneOption { OptionId = 3, OptionName = "Car Charger", IsOptionSelected = false },
new PhoneOption { OptionId = 4, OptionName = "Extra Cable", IsOptionSelected = false }
};
return options;
}
意見:
<div class="form-group">
<label class="control-label">Phone Options</label>
<div>
@foreach (var option in Model.PhoneOptions)
{
<div>
@{ string cbId = "PhoneOption_" + @option.OptionId; }
<input asp-for=@option.IsOptionSelected type="checkbox" value=@option.IsOptionSelected id=@cbId name=@cbId />
@Html.Label(@cbId.ToString(), @option.OptionName)
@*This is causing invalid operation exception*@
@*<label asp-for=@cbId.ToString()>@option.OptionName</label>*@
<span asp-validation-for=@cbId class="text-danger" role="alert"></span>
</div>
}
</div>
</div>
前もって感謝します!