Ответ 1
Не уверен, что это ваш ответ, но это может привести вас в правильном направлении. Скотт Гензельман (MSFT) показывает, как получить ASP.NET WebForms, ASP.NET MVC и динамические данные ASP.NET - oh и AJAX работать вместе в гармонии.
Я прочитал Маршрутизация ASP.NET... Перезапись URL-адреса? и Использование маршрутизации с помощью WebForms, которые являются отличными статьями, но ограничиваются простыми иллюстративными примерами "привет мир".
Есть ли кто-нибудь, используя маршрутизацию ASP.NET с веб-формами нетривиальным способом? Любые ошибки, о которых нужно знать? Проблемы с производительностью? Дальнейшее рекомендуемое чтение, на которое я должен обратить внимание, прежде чем вспахивать в реализацию моей собственной?
ИЗМЕНИТЬ Найденные дополнительные полезные URL:
Не уверен, что это ваш ответ, но это может привести вас в правильном направлении. Скотт Гензельман (MSFT) показывает, как получить ASP.NET WebForms, ASP.NET MVC и динамические данные ASP.NET - oh и AJAX работать вместе в гармонии.
Две очень полезные ссылки для маршрутизации .net 4.0 и ASP.net
Я видел этот подкаст, связанный с блогом ScottGu на днях, который может быть вам полезен
Майк Ормонд пошаговое руководство по настройке URL-маршрутизации с помощью ASP.NET отлично (Получение маршрутизации и запуска ASP.NET - окончательный Руководство)
Маршрутизация URL-адресов приведена простым способом в следующих статьях. Он предоставляет информацию, например, отправку запроса на маршрут, получение параметров URL на целевой странице, установку значений по умолчанию для параметров.
Простой пример использования маршрутизации в ASP.NET
Добавить в default.aspx 3 кнопки -
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Second.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("Third.aspx?Name=Pants");
}
protected void Button3_Click(object sender, EventArgs e)
{
Response.Redirect("Third.aspx?Name=Shoes");
}
Чтение строки запроса на третьей странице
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["Name"]);
}
Теперь, если вы запустите программу, вы сможете перейти ко второй и третьей форме. Так оно и было. Добавьте добавление маршрутизации.
Добавить новый элемент - Global.aspx используя System.Web.Routing;
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute(
"HomeRoute",
"Home",
"~/Default.aspx"
);
routes.MapPageRoute(
"SecondRoute",
"Second",
"~/Second.aspx"
);
routes.MapPageRoute(
"ThirdRoute",
"Third/{Name}",
"~/Third.aspx"
);
}
В default.aspx изменить protected void Button1_Click (отправитель объекта, EventArgs e) { //Response.Redirect( "Second.aspx" ); Response.Redirect(GetRouteUrl ( "SecondRoute", null)); }
protected void Button2_Click(object sender, EventArgs e)
{
//Response.Redirect("Third.aspx?Name=Pants");
Response.Redirect(GetRouteUrl("ThirdRoute", new {Name = "Pants"}));
}
protected void Button3_Click(object sender, EventArgs e)
{
// Response.Redirect("Third.aspx?Name=Shoes");
Response.Redirect(GetRouteUrl("ThirdRoute", new { Name = "Shoes" }));
}
Изменить загрузку страницы в файле third.aspx
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write(Request.QueryString["Name"]);
Response.Write(RouteData.Values["Name"]);
}
Запустите программу, обратите внимание, что URL выглядит намного чище - в нем нет расширений файлов (Second.aspx становится только вторым)
Чтобы передать более одного аргумента
добавить новую кнопку в default.aspx со следующим кодом:
protected void Button4_Click(object sender, EventArgs e)
{
Response.Redirect(GetRouteUrl("FourthRoute", new { Name = "Shoes" , Gender = "Male"}));
}
добавьте следующий код в global.asax
routes.MapPageRoute(
"FourthRoute",
"Fourth/{Name}-{Gender}",
"~/Fourth.aspx"
);
создайте страницу Fourth.aspx со следующей загрузкой страницы:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("Name is: " + RouteData.Values["Name"] + " and Gender is " + RouteData.Values["Gender"]);
}