1

我有一个与旅行相关的网络应用程序,其中我的网址看起来像

MyTravel/Tour/Inner.aspx?Pid=2&Cid=8

MyTravel/Tour/Inner.aspx?Pid=2&Cid=8&DeptF=ND

现在我想在我的应用程序上重写 url,比如

MyTravel/Tour/Goa/new-year-goa

这里 goa 和 new year goa 由 pid 和 cid 值获取。

帮我。

提前致谢

[编辑:改革]

4

1 回答 1

1

URL重写可以如下进行,

void Application_BeginRequest(object sender, EventArgs e) {

    string fullOrigionalpath = Request.Url.ToString();

    if (fullOrigionalpath.Contains("/Tour/Inner.aspx?Pid=2&Cid=8")) {
        Context.RewritePath("/Tour/Goa/new-year-goa");
    }
    else if (fullOrigionalpath.Contains("/Tour/Inner.aspx?Pid=2&Cid=8&DeptF=ND")) {
        Context.RewritePath("/Tour/Goa/new-year-goa"); 
        //This can be something else according to your requirements.
    }
} 

你可以看看这个http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

或者你可以修改你的web.config来实现目标,

这是样本,

<?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="~/Tour/Inner.aspx?Pid=2&Cid=8" to="~/Tour/Goa/new-year-goa" />
 //Some other re-writers to achieve specific requirements.
</rewriter>  

</configuration> 

[编辑:以下可以是一种解决方案]

好的。因此,正如您所说,您需要检查pidcid相应地重定向,

实现这一目标的一种方法如下,

  • Request.QueryString("Pid")Request.QueryString("Cid")
  • 将它们存储到一些变量中,
  • 使用一些 switch...case 机制检查这些变量,并根据传递的条件设置使用的路径Context.ReWritePath("Your Specified Path")

另一种方法是使用数据库,

  • 创建一个包含三列、pidcid和的表location_path
  • 现在得到cidpid使用上面提到的Request.QueryString
  • 使用 sql 查询,从表中选择与 匹配的位置,cid并使用pidContext.ReWritePathRequest.QueryString设置它

希望您现在清楚这一点。

希望能帮助到你。

于 2013-04-18T11:41:22.070 回答