url的格式指向单选按钮选择

时间:2011-01-20 09:58:24

标签: asp.net radiobuttonlist

  

可能重复:
  linking to a radio button selection, asp.net c#

我有一个带有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)
     {

     }


    }



}

1 个答案:

答案 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.

无论如何,这段代码是作为起点的起点。可能还有其他方法可以做到,有些甚至可能更好。