Tengo un proyecto de aplicación web ASP.Net Core MVC. Quiero enviar el estado marcado de la casilla de verificación como valor al parámetro relacionado del modelo en el envío del formulario. He visto tantos ejemplos que usan jquery para obtener/establecer el valor de la casilla de verificación a través de métodos onchange.
Lo que me pregunto es si es posible asignar el estado marcado de la casilla de verificación actual al valor de una manera similar al código a continuación (no funciona)
<input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" value="(this.checked)"Uno de los ejemplos de trabajo más simples que encontré es el siguiente, pero devuelve falso si la casilla de verificación está marcada de forma predeterminada y su estado no cambia.
<input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" onchange="if(this.checked) this.value='true'; else this.value='false';" >Sé que hay muchas formas de lograr lo que quiero, pero quiero la solución más limpia.
¡Gracias por adelantado!
Editar: La estructura de mi código es la siguiente:
Vista
@model MyModel <form id="UpdateForm" class="was-validated" method="post" enctype="multipart/form-data" asp-controller="ControllerName" asp-action="Update"> <div class="modal-body"> <div class="form-group"> <input type="text" class="form-control" id="Name" name="DTO.Name" value="@Model.Name" required> <input type="checkbox" id="IsActive" name="DTO.IsActive" checked="@Model.IsActive"> </div> </div> <div class="modal-footer"> <button type="submit" class="btn btn-primary" data-save="modal">Update</button> </div> </form>Controlador
public async Task<IActionResult> Update(Guid id, UpdateDto DTO) { ... }Solución https://www.learnrazorpages.com/razor-pages/forms/checkboxes
En vista
<input type="checkbox" " id="IsActive" name="DTO.IsActive" checked="@Model.IsActive" value="true">En el conjunto de objetos DTO por defecto
public bool IsActive { get; set; } = false;Sí, puede hacerlo usando una instrucción de afeitar en línea @(). Se vería así:
<input type="checkbox" id="IsActive" name="DTO.IsActive" @(Model.IsActive ? "checked" : "") />también podrías usar el asistente Checkbox
@Html.CheckBoxFor(model => model.IsActive )