Utilisez la propriété ReadOnly de la zone de texte.
Éditer: D'après le commentaire de OP, cela ne fera probablement pas l'affaire.
Edit 2: De DotNetSlackers:
Alors, quelle est la différence entre ces deux propriétés et pourquoi n'existent à la fois? Il y a deux différences entre ces deux propriétés, un trivial différence et une subtile, profonde: une
- Les deux propriétés différentes balises émettent. Lorsque vous définissez Activé sur False, le TextBox injecte l'attribut désactivé = "désactivé" dans rendu HTML. Lorsque vous définissez la propriété ReadOlyly sur True, l'attribut readonly = "readonly" est injecté. "
- Selon la spécification W3C sur les formulaires HTML, les contrôles désactivés ne sont pas" ", alors que les contrôles en lecture seule PEUVENT être" réussie ". Un contrôle "réussi" est celui dont la paire nom/valeur est renvoyée au navigateur via les en-têtes POST ou la chaîne de requête. Par conséquent, les contrôles désactivés ne sont pas renvoyés à la page ASP.NET, tandis que les contrôles en lecture seule peuvent être, selon sur l'agent utilisateur. (Dans mes tests, à la fois IE 6et FireFox 1.5 envoyer le long de la en lecture seule entrée TextBox.)
......
Si vous rencontrez ce problème dans version ASP.NET 1 .x vous pourriez avoir trouvé la propriété ReadOnly de la TextBox et utilisé cela au lieu de définir Activé sur False. Vous pourriez encore avoir une page de ViewState désactivé et définir un en lecture seule TextBox texte de contrôle Web propriété par programme, car la valeur TextBox est renvoyé par la soumission du formulaire pour en lecture seule contrôles. Cependant, dans la version ASP.NET 2.0, les choses changent juste un peu, comme l'a noté par Rick Strahlin son entrée de blog ASP.NET 2.0 ReadOnly changement de comportement lorsque EnableViewState est faux. Avec 2.0, le comportement de la propriété TextBox controlReadOnly a légèrement changé .De la documentation technique:
La valeur du texte d'un contrôle TextBox avec la propriété ReadOnly définie sur true est envoyé au serveur lorsqu'un postback se produit, mais le serveur ne pas de traitement pour une zone de texte en lecture seule. Cela empêche un utilisateur malveillant de modifier une valeur de texte en lecture seule. La valeur de la propriété Text est conservée dans l'état d'affichage entre les publications, sauf si elle est modifiée par le code côté serveur.
Ce qui se passe est que le client envoie le long de la valeur de la lecture seule TextBox à travers les valeurs de forme, mais le moteur ASP.NET 2.0 ne prend pas cette valeur et l'affecter au texte propriété de la zone de texte sur postback à aider à protéger contre un utilisateur malveillant changer la valeur TextBox en lecture seule eux-mêmes. Mais cela nous ramène à notre problème précédent - si la valeur n'est pas spécifiée dans la publication (ou est ignoré, dans ce cas) et ViewState est désactivé, la valeur sera perdue. Eep.
Rick'sworkaround était juste manuellement lire la valeur de la requête en-têtes (ce .TextBox1.Text = demande [this.TextBox1.UniqueID];), ce qui pose un risque de sécurité et pose le problème que 2,0 adresses. L'approche optimale consiste à requery la valeur de la base de données (ou partout où vous avez initialement la valeur définie par programme pour le TextBox en lecture seule ).
La morale de ce billet de blog est que si vous avez données en lecture seule, vous pouvez utiliser soit sous forme désactivée ou en lecture seule champs, il n'a pas d'importance si vous recevez de nouveau la valeur ou non du champ de formulaire dans les formulaires . Il ne devrait pas d'importance parce que vous ne devriez pas être confiance/en utilisant ces données pour commencer avec! Si vous avez des données en lecture seule, ne le relisez pas à partir d'un flux de données que l'utilisateur final peut bricoler!
Source
Ce que j'ai fini par faire était ce que Rob a suggéré.J'ai ajouté un asp: HiddenField à la page. Lorsque le JavaScript a modifié la valeur de la zone de texte du côté client, il a également changé la valeur de HiddenField. Ensuite, la nouvelle valeur était accessible côté serveur via HiddenField. C'est un tas de merdos alambiquées, mais c'est pourquoi ils l'appellent brown-field. – Slim