我想在选择下拉项目时更改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);
}
}
答案 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
的信息)。