section - razor c#
¿Cómo presento entradas deshabilitadas en ASP.NET MVC? (8)
@ppumkin mencionó esto en su comentario sobre esta respuesta, pero quería resaltarlo ya que no pude encontrar otros recursos para enviar datos de una <select>
deshabilitada. También creo que es relevante para la pregunta, ya que las selecciones no son <input>
s, sino que son "input".
Solo incluya un campo oculto para la selección deshabilitada y todo está ordenado.
Ejemplo:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won''t be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
Precaución: esto pondrá dos etiquetas en la página con la misma ID, que no es realmente válida HTML y podría causar dolores de cabeza con javascript. Para mí, tengo javascript para establecer el valor del menú desplegable por su id
Html, y si pones el campo oculto primero, el javascript lo encontrará en lugar de select
.
¿Cómo presento entradas deshabilitadas en ASP.NET MVC?
Gracias a todos:
La forma en que resolví esto:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
Nota:
Obtuve esta información en la respuesta, pero me editaron.
Normalmente, si tengo un campo que es "de solo lectura" pero que debe enviarse nuevamente al servidor, desactivo la visualización (o simplemente texto), pero luego agrego un campo oculto con el mismo nombre. Aún debe asegurarse de que el campo no se haya modificado realmente en el lado del servidor, simplemente no lo actualice desde el modelo en su acción, pero el estado del modelo seguirá siendo preciso si hay errores.
Puede crear una plantilla de editor como la siguiente
CSS
.disabled {
background-color:lightgray;
}
Plantilla del editor
@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })
Simplemente haga esa propiedad [Obligatorio] en el modelo de vista vinculado a esa vista.
También puede usar un código como este antes de enviar el formulario:
$(":disabled", $(''#frmMain'')).removeAttr("disabled");
cuando tratamos con casillas de verificación desactivadas pero marcadas y queremos publicar el valor, debemos asegurarnos de que nuestro campo oculto aparezca antes del campo @ Html.CheckBoxFor oculto.
siguiente es el enlace desde donde encontré la respuesta. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
¿No puedes hacer el campo readonly="readonly"
lugar de disabled="disabled"
? Se enviará un valor de campo de solo lectura al servidor y el usuario aún no podrá editarlo. Sin embargo, una etiqueta SELECT
es una excepción.