C # (ASP.Net) Vinculando valores de seleção a constantes em Codebehind

Código ASPX

    Developer  dev.test.com
    staging.test.com

ASPX.CS - Codebehind

const string ServerDeveloper = "developer";

ASPX Error: Code blocks are not supported in this context.

Question: So what is the correct way to tie an dropdown/radio buttion/... ASPX value to a constant that is shared with the CodeBehind code?

Eu sei que eu poderia fazer rbServer.Add.Item ("desenvolvedor") [do CodeBehind], mas existe uma maneira de alcançá-lo do lado da apresentação das coisas?

4
Estamos perdendo alguma informação aqui? Por favor, corrija o código ASPX!
adicionado o autor Torbjørn, fonte

4 Respostas

Seria:

rbServer.Items.Add(ServerDeveloper)

Ok, então já que você quer fazer isso da apresentação ... É possível, mas terrivelmente feio:

<div>
<% rbServer.Items.Add(new ListItem("Dev", ServerDeveloper)); %>

    Blah

</div>

Note que o bloco de código tem que estar acima da marcação - se você colocá-lo abaixo, não parece funcionar. Note também que o const terá que ser protegido para que a página possa acessá-lo. Isso parece terrivelmente um truque para mim, mas aí está.

3
adicionado
Eu concordo que o código inline é feio. Eu só esperava que
adicionado o autor Jason V, fonte
No entanto, ele tem o bom "detalhe" de usar a constante em ambas as arenas.
adicionado o autor Jason V, fonte

Na maioria dos casos, adiciono os ListItems à Lista no code-behind, não na marcação. Eu estou supondo que isso vai resolver o seu problema (mesmo que eu ache que estamos perdendo alguma informação aqui). Crie novos ListItems e adicione-os à coleção de itens do rbServer.

0
adicionado

Em retrospecto, a melhor solução seria adicioná-lo a partir do codebehind usando rbServer.Items.Add ()

0
adicionado
Eu discordo, se eles são valores constantes é mais fácil colocá-los no aspx porque ao gerar arquivos de recursos, eles são gerados automaticamente no resx. Se você adicioná-los no codebehind, você terá que vincular as entradas de recursos manualmente com GetLocalResoureObject() ...
adicionado o autor Peter, fonte

Eu geralmente tento evitar o controle RadioButtonList pela mesma razão que você postou. Embora eu não tenha vindo com um fácil de usar alternativa :(

0
adicionado