Desactivar casilla de verificación en Ver

Estoy tratando de deshabilitar una casilla de verificación en mi vista usando una propiedad de modelo. Sin embargo, en ambos casos, la casilla de verificación está deshabilitada. ¿No debería usar "" en el siguiente código?

<%= Html.CheckBoxFor(c => c.HasList, new { disabled = (Model.CanModifyList) ? "" : "disabled" })%>

preguntado el 22 de mayo de 12 a las 19:05

2 Respuestas

Incluso si ha establecido disabled="" todavía está clasificado como deshabilitado ya que el elemento aún tendrá el disabled atributo. Sin usar JavaScript/JQuery, tendrá que hacer una declaración if en su Vista.

Tenga paciencia conmigo ya que estoy acostumbrado a la sintaxis de Razor, pero debería ser algo como:

<%if (model.CanModifyList) { %>
<%= Html.CheckBoxFor(c => c.HasList)%> 
<% } else { %>
<%= Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })%>
<% } %>

Lo que sería aún mejor es si crearas tu propio HTML Helper (quizás una sobrecarga para CheckBoxFor) que devolvió el HTML correcto dependiendo de la propiedad del modelo, de esa manera le ahorra hacer lógica adicional en su vista :)

contestado el 22 de mayo de 12 a las 20:05

Sí. Estaba tratando de ver si podía usar el operador condicional y hacerlo sin usar if/else. - dotNetNewbie

@dotNetNewbie sí, la única forma de hacerlo sería un Html Helper :) - mattytommo

El código de @mattytommo se puede reescribir como

@{
    if (model.CanModifyList) 
    { 
        @Html.CheckBoxFor(c => c.HasList)%> 
    } 
    else 
    { 
        @Html.CheckBoxFor(c => c.HasList, new { disabled = "disabled" })
    }
}

contestado el 05 de mayo de 16 a las 02:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.