No MVC 6, como codificar a lista da caixa de seleção à vista e passar os valores verificados para o controlador?
Desculpe, mas a maioria das minhas pesquisas me leva a códigos MVC antigos. Qualquer ajuda será apreciada.
No MVC 6 com auxiliares de tags, como você codifica um conjunto de caixas de seleção:
Use o auxiliar de tag para o rótulo. Assim, clicar nele alternará o valor verificadoSalvar (Vincular?) O valor verificado à propriedade IsOptionSelectedPasse esses valores verificados de volta ao Controller depois de clicar em Enviar?
Consegui exibir as caixas de seleção com etiquetas corretamente, mas não sei como passar os valores verificados de volta ao controlador por meio do modelo. No momento, os valores IsOptionSelected estão retornando como falsos.
Também pude fazer o auxiliar de html para o rótulo funcionar, mas não para o auxiliar de tags. Também posso estar codificando tudo errado, para que todas as dicas ajudem!
Aqui está o que eu tenho até agora:
Exibição:
Entidade:
public class PhoneOption
{
public bool IsOptionSelected { get; set; } = false;
public int OptionId { get; set; }
public string OptionName { get; set; }
}
Modelo:
[Display(Name = "Phone Options")]
public IEnumerable<PhoneOption> PhoneOptions { get; set; }
. . . .
PhoneOptions = repository.GetPhoneOptions();
Repositório:
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;
}
Visão:
<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 [email protected] type="checkbox" [email protected] id=@cbId name=@cbId />
@Html.Label(@cbId.ToString(), @option.OptionName)
@*This is causing invalid operation exception*@
@*<label [email protected]()>@option.OptionName</label>*@
<span asp-validation-for=@cbId class="text-danger" role="alert"></span>
</div>
}
</div>
</div>
Desde já, obrigado!