2008-10-14 5 views
4

code ASPXC# (ASP.Net) Lier les valeurs de sélection à des constantes dans Codebehind

 
<asp:RadioButtonList ID="rbServer" runat="server" > 
    <asp:ListItem Value=<%=ServerDeveloper%>> Developer </asp:ListItemv 
    <asp:ListItem Value="dev.ahsvendor.com"> dev.test.com</asp:ListItem> 
    <asp:ListItem Value="staging.ahsvendor.com"> staging.test.com</asp:ListItem> 
</asp:RadioButtonList> 

aspx.cs - CodeBehind

 
const string ServerDeveloper = "developer"; 

ASPX erreur: blocs de code ne sont pas soutenu dans ce contexte.

Question: Alors, quelle est la bonne façon de lier une valeur dropdown/radio buttion/... ASPX à une constante qui est partagée avec le code CodeBehind?

Je sais que je pourrais faire rbServer.Add.Item ("developer") [de CodeBehind], mais y a-t-il un moyen de l'obtenir du côté Présentation?

+0

Sommes-nous manquant quelques informations ici? S'il vous plaît corriger le code ASPX! –

Répondre

3

Serait-il:

rbServer.Items.Add(ServerDeveloper)

Ok, donc puisque vous voulez faire de la présentation ... Il est possible, mais horriblement laid:

 
<div> 
<% rbServer.Items.Add(new ListItem("Dev", ServerDeveloper)); %> 
<asp:RadioButtonList ID="rbServer" runat="server"> 
    <asp:ListItem Value="Blah">Blah</asp:ListItem> 
</asp:RadioButtonList> 
</div> 

Notez que le bloc de code a être ci-dessus le balisage - si vous le mettez ci-dessous, cela ne semble pas fonctionner. Notez également que le const devra être protégé pour que la page puisse y accéder. Cela ressemble terriblement à un hack pour moi, mais il est là.

+0

Je suis d'accord le code inline est moche. Je me suis juste attendu <% = ... à Merci –

+0

Cependant, il a le bon "détail" de l'utilisation de la constante dans les deux arènes –

0

En rétrospective, la meilleure solution serait d'ajouter à l'aide du codebehind rbServer.Items.Add()

+0

Je ne suis pas d'accord, si elles sont des valeurs constantes, il est plus facile de les mettre dans l'aspx. le resx Si vous les ajoutez dans le codebehind, vous devrez lier les entrées de ressources manuellement avec GetLocalResoureObject() ... – Peter

0

Dans la plupart des cas, j'ajouter les ListItems à la liste dans le codebehind, pas dans le balisage. Je suppose que cela va résoudre votre problème (même si je pense que nous manquons quelques informations ici). Créez de nouveaux ListItems et ajoutez-les à la collection Items de rbServer.

0

J'essaie généralement d'éviter le contrôle RadioButtonList pour la raison que vous avez signalée. Bien que je ne suis pas venu avec une alternative facile à utiliser :(

Questions connexes