Durante il rendering della pagina di visualizzazione, in base ad alcune condizioni nell'azione del controller, desidero disattivare tutti i controlli (casella di testo, casella di controllo, pulsante ecc.) presenti nel modulo in una pagina di visualizzazione MVC. C'è un modo per farlo? Per favore aiuto.Disabilitare tutti i controlli (casella di testo, casella di controllo, pulsante, ecc.) In una vista (ASP.NET MVC)
risposta
è possibile passare un flag alla vista per indicare che deve disabilitare tutti i controlli.
Ecco un esempio:
public ActionResult MyAction() {
ViewData["disablecontrols"] = false;
if (condition)
{
ViewData["disablecontrols"] = true;
}
return View();
}
Nella vista (usando jQuery):
<script type="text/javascript">
$(document).ready(function() {
var disabled = <%=ViewData["disablecontrols"].ToString()%>;
if (disabled) {
$('input,select').attr('disabled',disabled);
}
})
</script>
Non penso che sia possibile farlo dal controller, poiché la vista viene restituita dopo che tutta l'altra logica è stata eseguita. Probabilmente potresti fare qualcosa, comunque, con le librerie AJAX incluse con ASP.NET MVC.
Che in realtà dipende da come i controlli vengono resi. Facciamo qualcosa di simile in pratica, tranne che impostiamo i controlli in sola lettura. Questo per permetterci di riutilizzare show (sola lettura) e modificare le viste.
Il modo in cui lo raccomando personalmente è di avere un flag di sola lettura impostato nella vista utilizzando un valore in ViewData.
Da lì, scrivere alcuni metodi di supporto per distinguere tra markup disabilitato e non disabilitato. È possibile creare questo markup da soli oppure eseguire il wrapping dei metodi HtmlHelper esistenti forniti da ASP.NET MVC.
// In your controller
ViewData["DisableControls"] = true;
<%-- In your view --%>
<% bool disabled = ViewData["DisableControls"] as bool; %>
...
<%= Html.TextBox("fieldname", value, disabled) %>
<%= Html.CheckBox("anotherone", value, disabled) %>
// In a helper class
public static string TextBox(this HtmlHelper Html, string fieldname, object value, bool disabled)
{
var attributes = new Dictionary<string, string>();
if (disabled)
attributes.Add("disabled", "disabled");
return Html.TextBox(fieldname, value, attributes);
}
Il modo in cui lo facciamo è quello di utilizzare il Page Load(), come si farebbe in WebForms, per disattivare i controlli del server. Abbiamo creato alcuni controlli server personalizzati per gestire i nostri campi modulo. Questo era nell'infanzia di ASP.NET MVC e non raccomanderei di farlo, ma è un'alternativa.
- 1. Disabilitare una casella di testo utilizzando i CSS
- 2. Disabilitare alcuni controlli di convalida ASP.Net quando una casella di controllo è selezionata.
- 3. Asp.Net MVC Casella elenco
- 4. ASP.NET MVC utilizza i controlli regolari della casella degli strumenti?
- 5. asp.net mvc casella incoerenza
- 6. Pulsante casella di controllo personalizzato
- 7. Come stile casella di testo utilizzando CSS in ASP.NET
- 8. casella di controllo generale "sincronizzazione automatica" casella di controllo
- 9. Disabilitare una casella di testo in Ruby on Rails?
- 10. Ottieni casella di controllo Valori sul postback ASP.NET MVC
- 11. Modifica Html.DisplayPer casella di controllo booleano MVC
- 12. Autoresize controllo casella di testo verticalmente
- 13. casella di testo ASP.NET perde testo su postback parziale
- 14. MVC DateTime Casella di testo Formattazione Problema
- 15. Creazione di un controllo casella di testo WPF come casella di testo destinatario email di Outlook
- 16. aumenta la dimensione della casella di testo bootstrap (ASP.NET MVC)
- 17. Deselezionare una casella di controllo in ComponentView
- 18. Come restringere il disegno dell'inchiostro con inchiostro microsoft nei controlli di input come (casella di testo, casella di controllo)?
- 19. Casella combinata con casella di controllo in winform
- 20. C# disabilita una casella di controllo in base al valore di input dell'utente della casella di testo di runtime
- 21. Allineamento casella di testo e pulsante, bootstrap
- 22. Cerca script nella casella di testo asp.net
- 23. MVC casella di controllo in più nascosta in forme css personalizzato casella
- 24. attributo di lunghezza massima di una casella di testo da DataAnnotations StringLength in Asp.Net MVC
- 25. Controllo predefinito una casella di controllo html
- 26. Pulsante all'interno di una casella di testo winforms
- 27. ottenere l'elenco di posta casella di controllo in vista Django
- 28. asp.net ValidateRequest = false per casella di testo anziché per pagina?
- 29. Ottenere valore da una casella di testo di asp.net mvc al momento dell'invio, fare clic su
- 30. Aggiungi una casella di controllo "Ricordami"
.............. jQuery rockz! –
Ha funzionato per me ... Grazie – Ravi
Awesome Cheers - funziona alla grande per me grazie! – wubblyjuggly