Sto cercando di personalizzare l'aspetto delle caselle di controllo nel mio sito ASP.NET MVC, utilizzando una tecnica simile a quella dettagliato qui di rottura: http://cssdeck.com/labs/css-checkbox-stylesMVC casella di controllo in più nascosta in forme css personalizzato casella
grande lavoro tranne quando inserito in una forma. Quando si utilizza il metodo @ Html.CheckBoxFor(), MVC aggiunge una casella di controllo nascosta aggiuntiva, apparentemente per assicurarsi che un valore venga inviato al modulo POST quando la casella di controllo non è selezionata: asp.net mvc: why is Html.CheckBox generating an additional hidden input
Quando la casella di controllo nascosta in più è attiva il modulo, la mia casella di controllo personalizzata non funziona. Lo clicco ma non si alterna tra gli stati. Se rimuovo la casella di controllo nascosta in più, allora funziona, ma credo che incontrerò problemi nell'invio del POST.
Ecco il codice html finale:
<div class="kbcheckbox">
<input checked="checked" data-val="true" data-val-required="The Approved field is required." id="UserEdit_IsApproved" name="UserEdit.IsApproved" type="checkbox" value="true">
<input name="UserEdit.IsApproved" type="hidden" value="false">
<label for="UserEdit_IsApproved"></label></div>
</div>
E qui è il CSS che sto usando (usa SCSS)
.kbcheckbox {
width: $checkbox_size;
height: $checkbox_size;
position: relative;
input[type="checkbox"]{
visibility: hidden;
}
label {
cursor: pointer;
position: absolute;
width: $checkbox_size;
height: $checkbox_size;
top: 0;
left: 0;
border-radius: $control_corner_radius;
border: 1px solid $control_border_color;
/*@include box-shadow(1px, 1px, 1px, 0, $control_border_color, inset);*/
/*@include box-shadow(0px, 1px, 0px, $control_background);*/
background: white;
}
label:after {
opacity: 0;
content: '';
position: absolute;
width: $checkbox_size * 0.62;
height: $checkbox_size * 0.25;
background: transparent;
top: $checkbox_size * 0.2;
left: $checkbox_size * 0.1;
border: 3px solid black;
border-top: none;
border-right: none;
@include transform(rotate(-45deg));
}
label:hover {
background: darken($control_background, 10%);
}
input[type=checkbox]:checked + label:after {
opacity: 1;
}
}
Tutte le idee?
+1 Sto avendo un problema simile con un tema da WrapBootstrap. L'unica idea che ho avuto è di creare una funzione JS per spostare l'input nascosto in una posizione più appropriata. Sei mai riuscito a risolvere questo problema in un altro modo? – philreed
Ho appena fatto una domanda simile qui. Non ho visto questo http://stackoverflow.com/questions/18368500/default-css3-checkbox-template-in-mvc – Jammer