我有这段代码
<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>
但在尝试将会话变量放入
时仍然出现错误非常感谢
杰米
答案 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杀死了我的单选按钮列表(以及此处未显示的文本),我必须在需要时加载它。希望这有帮助!