К сожалению, синтаксис привязки данных (<%# %>
) в этом контексте не поддерживается, а синтаксис литеральной привязки (<%= %>
или <%: %>
) не дает желаемых результатов при назначении значений серверным элементам управления.
Вот несколько альтернативных подходов:
1.Привязка к источнику данных:
Если вы создали коллекцию объектов, содержащих текст и значение, вы можете легко установить свойства DataSource, DataTextField и DataValueField в списке переключателей.Поскольку источник данных будет заполняться кодом, доступ к переменным сеанса тривиален.
Например, в разметке:
<asp:RadioButtonList ID="rblSplitWeek" runat="server"
DataTextField="Text"
DataValueField="Value" />
И в коде позади:
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.Назначьте значение из выделенного кода
Если вы объявите элемент списка с текстом, но без значения , вы можете установить значение из сценария.
Например,в разметке:
<asp:RadioButtonList ID="rblSplitWeek" runat="server">
<asp:ListItem selected="true">No Choice</asp:ListItem>
<asp:ListItem Text = "First" />
<asp:ListItem Text = "Second" />
</asp:RadioButtonList>
и в коде позади:
rblSplitWeek.Items.FindByText("First").Value = Session["s_price_1"].ToString();