Malheureusement, les données syntaxe de liaison (<%# %>
) est pas pris en charge dans ce contexte, et la syntaxe de liaison littérale (<%= %>
ou <%: %>
) ne produit pas les résultats souhaités lors de l'affectation de valeurs à les contrôles du serveur.
Voici quelques approches alternatives:
1. se lier à une source de données:
Si vous avez créé une collection d'objets contenant du texte et de la valeur, vous pouvez facilement définir la source de données, DataTextField, et les propriétés DataValueField de la liste des boutons radio. Étant donné que la source de données serait renseignée dans code-behind, l'accès aux variables de session est trivial.
Par exemple, dans le balisage:
<asp:RadioButtonList ID="rblSplitWeek" runat="server"
DataTextField="Text"
DataValueField="Value" />
Et dans le code-behind:
public class RadioValue
{
public string Text { get; set; }
public string Value { get; set; }
}
// ...
var values = new RadioValue[]
{
new RadioValue { Text = "No Choice" },
new RadioValue { Text = "First", Value = Session["s_price_1"].ToString() },
new RadioValue { Text = "Second" }
}
rblSplitWeek.DataSource = values;
rblSplitWeek.DataBind();
2. Attribuez la valeur du code-behind
Si vous déclarez la liste élément avec du texte mais sans valeur, vous pouvez définir la valeur à partir du script.
Par exemple, dans le balisage:
<asp:RadioButtonList ID="rblSplitWeek" runat="server">
<asp:ListItem selected="true">No Choice</asp:ListItem>
<asp:ListItem Text = "First" />
<asp:ListItem Text = "Second" />
</asp:RadioButtonList>
Et dans le code-behind:
rblSplitWeek.Items.FindByText("First").Value = Session["s_price_1"].ToString();