0

可能重复:
链接到单选按钮选择,asp.net c#

我有一个带有 textarea 和单选按钮的页面。文本区域填充了基于单选按钮选择的数据。我希望单选按钮选择出现在 url 中,以便用户可以链接到单选按钮选择。

我希望我需要做的就是修改我的查询字符串以包含单选按钮值。这是我进行单选按钮选择时提琴手捕获的数据。

 __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)
     {

     }


    }



}
4

1 回答 1

0

需要注意的一件事是您误解了您的网址。它应该是:

http://www.test.com/test.aspx?ctl00$MainContent$RadioButtonList1=41

(注意倒数第三个字符是 =。

除此之外,这将取决于您的页面在拾取所选单选按钮方面的工作方式。我的建议是尝试一下,看看会发生什么。但是,我怀疑如果您是基于页面加载时触发的事件(即某种回发行为)来执行此操作,那么它将无法正常工作。

如果是这种情况,那么您只想在页面加载时做一些事情来检查该值是否存在于 url 中并在加载文本之前设置它。如果您最终走这条路,您可能需要考虑使用定义更明确且用户友好的查询字符串参数。特别是您拥有的 id 是根据其在控制层次结构中的位置构建的。如果您要重新设计 HTML 结构,ID 可能会发生变化。

此外...

使用您在设置单选按钮列表的 selectedindex 的位置提供的代码,您需要在设置之前找出需要的值,如果没有更好的值,请将其设置为 0(尽管看起来您正在设置为 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。

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

于 2011-01-20T10:07:14.013 回答