Похоже, проблема заключается в том, что вы хотите, чтобы каждый пользователь имел свой собственный URL ... Это тот случай?
Вы можете использовать переписывание URL. Одним из наиболее простых подходов является использование HttpContext.RewritePath в методе Application_BeginRequest
вашего файла Global.asax
.
EDIT: Добавлен Пример кода
Я делаю некоторые предположения здесь ... Предположения я делаю это, что а) пользователи имеют имя, б) пользователи имеют фамилию и с) пользователи имеют уникальный идентификатор, в моем случае я использую «userId».
Для начала вам нужно будет выбрать формат для общедоступных URL-адресов. Что-то вроде этого могло бы работать:
http://www.yoursite.com/public/firstname-lastname-1234.aspx
Где 1234 пользователь.
Затем вам понадобится функция для создания этих URL-адресов. Что-то вроде этого возможно:
String ToPublicUrl(String firstName, String lastName, int userId)
{
return String.Format("http://www.yoursite.com/public/{0}-{1}-{2}.aspx",
Regex.Replace(firstName, "[^a-zA-Z]", ""),
Regex.Replace(lastName, "[^a-zA-Z]", ""),
userId);
}
Обратите внимание, как я удаляю любые буквы, отличные от буквы.
Теперь в файле Global.asax, добавьте следующий код:
static Regex ProfileRegex = new Regex(@"/public/(?<firstname>[a-zA-Z]+)-(?<lastname>[a-zA-Z]+)-(?<userid>[0-9]+)\.aspx$",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
void Application_BeginRequest(object sender, EventArgs e)
{
Match match = ProfileRegex.Match(Context.Request.FilePath);
if((match != null) && match.Success)
{
Context.RewritePath((String.Format("~/public/userProfile.aspx?userId={0}",
match.Groups["userid"]));
}
}
Там есть много вещей происходит здесь. Чтобы начать, просто определив эту функцию, ASP.Net подпишет ее на событие HttpApplication.BeginRequest.
Дальше это регулярное выражение, которое делает тяжелый подъем.Он в основном соответствует любым запросам на странице профиля пользователя и внутренне сообщает ASP.Net о маршрутизации запроса на другую страницу. Новые запросы будут выглядеть следующим образом:
http://www.yoursite.com/public/userProfile.aspx?userId=1234
Это до вас, чтобы реализовать /public/userProfile.aspx
страницу. Есть много способов сделать все правильно. Это может быть так же прямо, как замена TextBox элементов управления с помощью Label элементов управления?
Если у вас есть несколько страниц, которые вы хотите опубликовать, вы можете реализовать несколько правил перезаписи. (Хотя в какой-то момент вам лучше использовать компонент, например this или this).
В качестве FYI я ссылался на образцы на this page для перезаписи. Дайте знать, если у вас появятся вопросы.
спасибо. Это дает мне гораздо лучшее представление о том, что происходит и что мне нужно сделать для создания этого URL-адреса. Похоже, что чтение только не должно быть большой проблемой. В этот уик-энд я ударю его, спасибо еще раз. –
Без проблем ... Удачи! – dana
Dana, когда и как используется ToPublicUrl()? Спасибо. –