Comment soumettre une entrée désactivée dans ASP.NET MVC?
c#
.net
javascript
asp.net-mvc
Sanchitos
la source
la source
Réponses:
Tu ne peux pas faire le champ
readonly="readonly"
au lieu dedisabled="disabled"
? Une valeur de champ en lecture seule sera soumise au serveur tout en restant non modifiable par l'utilisateur. UneSELECT
balise est cependant une exception.la source
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>
comment puis-je le griser si visuellement il semble qu'il ne soit pas modifiable. Mieux encore, pouvons-nous utiliser quelque chose de similaire à LabelFor, j'ai essayé LabelFor mais il n'obtient que le DisplayName ....type="checkbox"
entréesMerci à tout le monde:
La façon dont j'ai résolu ceci:
Remarque:
J'ai eu cette information sur la réponse mais j'ai été modifiée.
la source
textBox.Attributes.Add("readonly", "readonly");
et l'explication est dans le lien$("#textBoxId").css("color", "#c0c0c0")
.@ppumkin l'a mentionné dans son commentaire sur cette réponse, mais je voulais le souligner car je ne pouvais pas trouver d'autres ressources sur la soumission de données d'un handicapé
<select>
. Je crois également que cela est pertinent pour la question car les sélections ne sont pas des<input>
s mais ce sont des «entrées».Exemple:
Attention: cela mettra deux balises sur la page avec le même identifiant, ce qui n'est pas vraiment du HTML valide et pourrait causer des maux de tête avec javascript. Pour moi, j'ai javascript pour définir la valeur de la liste déroulante par son html
id
, et si vous mettez le champ caché en premier, le javascript le trouvera à la place duselect
.la source
En règle générale, si j'ai un champ en "lecture seule" mais qui doit être renvoyé au serveur, je rendrai l'affichage désactivé (ou simplement du texte), mais j'ajouterai ensuite un champ caché avec le même nom. Vous devez toujours vous assurer que le champ n'est pas réellement modifié côté serveur - ne le mettez pas à jour à partir du modèle dans votre action - mais l'état du modèle sera toujours précis s'il y a des erreurs.
la source
Vous pouvez également utiliser un code comme celui-ci avant l'envoi du formulaire:
la source
Ajax.BeginForm
?De par leur conception, les navigateurs ne prennent pas en charge cela.
Soit faites-les
readonly
ce qui permet de soumettre des valeurs au serveur, soit si vous avez affaire à des contrôles qui sont toujours utilisables avec desreadonly
attributs tels que Select, ajoutez un style csspointer-events: none;
pour les rendre non interactifsUne sorte de hack, mais ça marche! Cela fonctionne également lorsque vous soumettez le formulaire directement avec le bouton Soumettre sans utiliser javascript. Aucun travail supplémentaire requis!
Par exemple:
la source
Vous pouvez créer un modèle d'éditeur comme celui ci-dessous
CSS
Modèle d'éditeur
la source
lorsque nous avons affaire à des cases à cocher désactivées mais cochées et que nous voulons publier la valeur, nous devons nous assurer que notre champ masqué apparaît avant le champ masqué @ Html.CheckBoxFor.
Voici le lien d'où j'ai trouvé la réponse. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
la source
expansion de Tasos '(": disabled", $ (' # xxxForm ')). removeAttr ("disabled"); vous pouvez utiliser:
la source
Cela aidera à soumettre des valeurs de modèle dans ASP.net:
la source
J'utilise généralement cette méthode pour CheckBox ou CheckBoxFor, car le désactiver entraîne la perte de la valeur. Readonly ne fonctionne pas non plus avec la case à cocher.
la source
Mettez simplement ce script dans les scripts @section de votre page. cela activera les entrées lorsque vous soumettez la page, et vous devez rediriger l'utilisateur vers une autre page après la soumission.
la source
Rendez simplement cette propriété [Obligatoire] dans le ViewModel liée à cette vue.
la source