我可以使用会话变量作为radiobutton列表中的listitem文本吗?

时间:2010-09-09 16:04:38

标签: asp.net radio-button

我有这段代码

<asp:RadioButtonList ID="rblSplitWeek" runat="server">  
                   <asp:ListItem selected="true">No Choice</asp:ListItem>
                    <asp:ListItem Text = "First" Value = "Session('s_price_1')"></asp:ListItem>
     <asp:ListItem Text = "Second"></asp:ListItem>
  </asp:RadioButtonList>

但在尝试将会话变量放入

时仍然出现错误

非常感谢

杰米

2 个答案:

答案 0 :(得分:2)

不幸的是,在此上下文中不支持数据绑定语法(<%# %>),并且在为服务器分配值时,文字绑定语法(<%= %><%: %>)不会产生所需的结果控件。

以下是一些替代方法:

<强> 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();

答案 1 :(得分:0)

我知道这已经晚了,但另一种方法是在PageLoad()事件中加载RadioButtonList的SelectedIndex属性。那么你不必拥有一个小型的RadioValue类 - 当然这很好。这是我最后一次这样做的方式......是的,我也使用了RadioValue类的方式....但是这里它使用的是没有RadioValue类的radiobuttonlist:

    protected void Page_Load(object sender, EventArgs e)
    {
        //Reload the last radio button selected.
        if (Session["rblSplitWeekIndex"] != null)
        {
            rblSplitWeek.SelectedIndex = ((int)Session["rblSplitWeekIndex"]);
        }

...

我将我的单选按钮列表选择索引保存在MasterPage中,该MasterPage具有搜索范围单选按钮列表和搜索文本框。因此,由于MasterPage杀死了我的单选按钮列表(以及此处未显示的文本),我必须在需要时加载它。希望这有帮助!