我有一个带有textarea和单选按钮的页面。文本区域使用基于单选按钮选择的数据填充。我希望单选按钮选择显示在URL中,以便用户可以链接到单选按钮选择。
我希望我需要做的就是修改我的查询字符串以包含单选按钮值。这里是fidler在我选择单选按钮时所掌握的数据。
__EVENTTARGET ctl00$MainContent$RadioButtonList1$6
__EVENTARGUMENT
__LASTFOCUS
__VIEWSTATE /+++PC9wPg0KPHA+/....
__EVENTVALIDATION /wEWCwKY7d6oAQLh8vmTCALk7M7lDQK+6NunDwK/6OenDwK86OenDwK86OunDwK86POnDwK96NenDwK96NunDwKxh73KA3Q+PMuKU/JUCKsF1aiY2DNLu7/pFFni/Qtz+7FXy35g
ctl00$MainContent$RadioButtonList1 41
我希望我的网址只需要看起来像这样指向单选按钮值,但我需要的只是相应的语法:
http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1$41
---代码背后---
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack == false)
{
RadioButtonList1.SelectedIndex = 0;
RadioButtonList1.DataBind();
}
else
{
string strRedirect;
strRedirect = "frm_Articles.aspx?Article_PK=" + RadioButtonList1.SelectedValue.ToString();
Response.Redirect(strRedirect);
}
}
protected void SqlDataSource2_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
//
}
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
try{
e.Command.Parameters["@URL_FK"].Value = Session["URL_PK"];
}
catch (Exception ex)
{
}
}
}
答案 0 :(得分:0)
有一点需要注意的是,你误解了你的网址。它应该是:
http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1=41
(注意第三个到最后一个字符是=。
除此之外,它取决于您的页面在拾取所选单选按钮方面的工作方式。我的建议是尝试一下,看看会发生什么。但是,我怀疑如果你是基于在页面加载时触发的事件(即某种回发行为)来做的话,那么它将无法工作。
如果是这种情况,那么您只想在页面加载时执行某些操作,以检查URL中是否存在该值,并在加载文本之前设置它。如果您最终沿着这条路线走下去,您可能需要考虑使用更明确且用户友好的查询字符串参数。特别是你在那里的id是根据它在控件层次结构中的位置构建的。如果您要重新设计HTML结构,ID可能会发生变化。
<强>另外... 强>
使用您在设置radiobutton列表的selectedindex时提供的代码,您需要在设置之前找出所需的值,如果没有更好的值,则将其设置为0(尽管看起来像是在绑定whcih之前设置为0似乎是多余的)。像这样的东西可能会起作用(没有编译或测试,所以对拼写错误表示道歉 - 它旨在为您提供一般性的想法,而不是最终的代码)。
if (Page.IsPostBack == false)
{
RadioButtonList1.DataBind();
//Check if you have a value to set.
if (Request.Querystring(RadioButtonList1.ClientID)!=null)
{
//Get the value
string setValue = Request.Querystring(RadioButtonList1.ClientID)
//Find the right radio option to select
foreach(ListItem item in RadioButtonList1.Items)
{
if (item.Value == setValue)
{
item.Selected = true;
break;
}
}
}
}
我认为如果没有设置为其他任何设置,它将默认为所选索引为0.
无论如何,这段代码是作为起点的起点。可能还有其他方法可以做到,有些甚至可能更好。