更改在asp.net 4.0中选择的下拉项目时更改URL

时间:2015-09-21 03:35:38

标签: c# asp.net url-rewriting

我想在选择下拉项目时更改ASP.Net中的URL。例如" www.website.com",我想在URL中显示状态,如" www.website.com/Maharastra"。 如果我现在选择区,我想将我的网址显示为" www.website.com/Maharastra/Mumbai"。

默认情况下,当页面最初加载时,我在listview中显示所有状态的列表,并实现了正常工作的URL重写概念。我想以同样的方式为下拉列表实现它。怎么做

在Global.asax

void Application_Start(object sender, EventArgs e)
{
        // Code that runs on application startup
        RegisterRoutes(RouteTable.Routes);
    }
    void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("StateRoute", "{StateName}", "~/Default.aspx", false, new RouteValueDictionary { { "StateName", String.Empty } });
        routes.MapPageRoute("DistrictRoute", "{StateName}/{DistrictName}", "~/State.aspx", false, new RouteValueDictionary { { "StateName", String.Empty }, { "DistrictName", String.Empty } });
}

在Default.aspx中

protected void Page_Load(object sender, EventArgs e)
{
  if (this.Page.RouteData.Values["StateName"] != null)
  {
      dlstState.SelectedIndex = -1;
      dlstState.Items.FindByText(this.Page.RouteData.Values["StateName"].ToString()).Selected = true;
      dlstState_SelectedIndexChanged(null, null);
  }
  if (this.Page.RouteData.Values["DistrictName"] != null)
  {
      dlstDistrict.SelectedIndex = -1;
      dlstDistrict.Items.FindByText(this.Page.RouteData.Values["DistrictName"].ToString()).Selected = true;
      dlstDistrict_SelectedIndexChanged(null, null);
  }
}

1 个答案:

答案 0 :(得分:1)

是的,你可以在javascript中完成。看看这个功能:

window.history.pushState("object or string", "Title", "/new-url");

执行此行代码会将URL更改为my-domain.com/new-url(第3个选项)。 Title字符串(第二个选项)用于描述新状态,并且不会更改文档的标题(for more detail

因此,在您的情况下,只需获取下拉列表中的值并使用.pushState函数,如下所示:

windows.history.pushState({}, null, <your_new_URL_here>);

详细了解如何操纵浏览器历史here(它包含有关pushState的信息)。