Динамическая перезапись URL для QueryStrings - PullRequest
2 голосов
/ 21 июня 2011

привет, пожалуйста, помогите мне в этом вопросе

У меня есть следующий URL -> www.sample.com/news.aspx?id=45

Я хочу передать "id" в строке запроса на news.aspx и показать эту новость, но из-за переписывания URL-адреса URL-адрес меняется на этот -> www.sample.com/news/my-news-45/

Как извлечь "id" из строки запроса?

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 21 июня 2011

вы можете вручную переписать URL, но обратная сторона написания кода вручную может быть утомительной и подверженной ошибкам.Вместо того, чтобы делать это самостоятельно, я бы порекомендовал использовать один из уже созданных модулей Http, доступных в Интернете, для выполнения этой работы за вас.

Вот несколько бесплатных, которые вы можете скачать и использовать сегодня:

http://urlrewriter.net/ http://www.urlrewriting.net/149/en/home.html

<?xml version="1.0"?>

<configuration>

  <configSections>
    <section name="rewriter"  
             requirePermission="false" 
             type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>

  <system.web>

    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>

  </system.web>

  <rewriter>
    <rewrite url="~/products/books.aspx" to="~/products.aspx?category=books" />
    <rewrite url="~/products/CDs.aspx" to="~/products.aspx?category=CDs" />
    <rewrite url="~/products/DVDs.aspx" to="~/products.aspx?category=DVDs" />
  </rewriter>  

</configuration>  

Переписывающие устройства HttpModule выше также добавляют поддержку обычныхсовпадение выражений и шаблонов URL (чтобы вам не приходилось жестко кодировать каждый URL в файле web.config).Таким образом, вместо жесткого кодирования списка категорий, вы можете переписать правила, как показано ниже, чтобы динамически извлекать категорию из URL для любой комбинации "/products/[category].aspx":

  <rewriter>
    <rewrite url="~/products/(.+).aspx" to="~/products.aspx?category=$1" />
  </rewriter>  

полную ссылку можно найти на этой линке

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

...