2010-08-30 3 views
0

J'ai une page asp.net et j'essaie d'ajouter quelques contrôles de saisie HTML cachés. Je vais soumettre ce formulaire à un autre site (PP), j'ai donc besoin que les noms des contrôles ne changent pas lorsqu'ils sont rendus. Existe-t-il un moyen de rendre ASP.NET honorer la propriété de nom que j'ai définie dans le code-behind?Contrôle ASP.NET HtmlInputHidden - le nom ne change pas?

Comme alternative, je ne ai pas besoin de créer dynamiquement ces contrôles, je peux aussi simplement affecter la valeur à un champ HTML existant, mais je ne sais pas comment faire avec ASP.NET/C#

+1

Quelle version d'asp.net utilisez-vous? Si vous utilisez .NET 4, cela faciliterait les choses ... par ex. http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net- 4-0-series.aspx – Charlino

+0

Im utilisant ASP.NET 3.5 –

Répondre

2

Utilisez-vous ASP.NET 4.0? Vous pouvez utiliser ClientIDMode sur le contrôle avec une valeur statique et l'ID ne changera pas.

Sinon, vous pouvez utiliser un littéral pour sortir l'élément lui-même ou simplement sa valeur. Sur vous êtes la page que vous avez:

<input type="hidden" id="ppID" value='<asp:Literal ID="ppIDValue" runat="server" />' /> 

ou

<input type="hidden" id="ppID" value="<%= ppIDValue %>" /> 

Et dans le code derrière ou où:

this.ppIDValue.Text = "value for ppID"; 

ou (en abrégé):

public class MyPage : Page 
{ 
    public string ppIDValue = "0"; 
    override OnLoad() 
    { this.ppIDValue = "100"; } 
} 
+0

Im utilisant ASP.NET 3.5. Pouvez-vous donner un exemple de la sortie littérale? –

+0

Merci! Juste ce dont j'avais besoin –

0

Le problème avec pu Le fait d'écrire des littéraux à l'intérieur des balises HTML est que les littéraux sont très susceptibles d'être retirés du fichier designer-codebehind, à un moment ennuyeux. Même si vous pouvez les ajouter manuellement, dans la plupart des cas, cela va bousiller le mappage entre l'éditeur basé sur l'interface graphique et le concepteur-codebehind. En outre, si vous utilisez des pages maîtres, elles changeront quand même la valeur de l'attribut name sur vos champs cachés.

J'ai été à la recherche de la meilleure façon de le faire moi-même, et j'étais sur le point d'écrire mon propre contrôle personnalisé, afin que je puisse préserver la valeur de l'attribut name. Puis je suis tombé sur this answer à une question similaire, où Page.ClientScript.RegisterHiddenField ("ppID", "1234") a été mentionné. Bingo!

Questions connexes