asp.net下拉列表AutoPostBack URL问题

时间:2012-04-13 19:46:52

标签: asp.net url drop-down-menu autopostback

Coders,

我有一个带有AutoPostBack = True的asp.net下拉列表控件。该控件放在defautl页面上的html / javascript选项卡容器URL为/Default.aspx。为了与下拉列表进行交互并触发AutoPostBack,用户必须选择标签项#2,它将页面的URL更改为/default.aspx#content-tab-1-2-tab。这是因为下拉列表放在选项卡项#2中,用户访问/default.aspx时看不到它。

现在的问题是,每当页面回发时,由于下拉列表中的选择更改,页面将指向/default.aspx URL而不是/default.aspx#content-tab-1-2-tab URL 。这会导致下拉列表不可见,用户必须单击选项卡项#2才能再次与下拉列表进行交互。

如何强制下拉列表中的AutoPostBack操作指向/default.aspx#content-tab-1-2-tab而不是/default.aspx?

这是我代码中的一个片段

protected void Page_Load(object sender, EventArgs e)
{
    DropDownList_City.Enabled = false;
    DropDownList_District.Enabled = false;


    GMap_main.addControl(new GControl(GControl.extraBuilt.MarkCenter));
    GMap_main.addControl(new GControl(GControl.extraBuilt.TextualCoordinatesControl));
    GMap_main.enableGoogleBar = true;
    GMap_main.Language = "ar";


    if (!IsPostBack)
    {
        var countries = from x in db.Countries select x.name_ar;

        //BINDING THE DROP DOWN LIST
        DropDownList_Country.DataSource = countries;
        DropDownList_Country.DataBind();

        DropDownList_City.Enabled = false;
        DropDownList_District.Enabled = false;
    }

}

/// <summary>
/// EVENT HANDLING FOR THE DROP DOWN LIST
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void DropDownList_Country_SelectedIndexChanged(object sender, EventArgs e)
{
    var city = from x in db.Cities where x.Country.name_ar == DropDownList_Country.SelectedValue select x.name_ar;

    DropDownList_City.DataSource = city;
    DropDownList_City.DataBind();

    DropDownList_City.Enabled = true;

}

谢谢。

1 个答案:

答案 0 :(得分:1)

因为URL的片段部分(包括#之后的部分)没有被发送到服务器,所以你将更难以解决这个问题,而不是你应该的样子。修复它的一种方法是添加一些javascript,用于在更改选项卡时设置隐藏字段的值。然后当它回发时,您将知道您所在的页面,并且您可以将该片段作为重定向的一部分。