获取以下两个网址:
www.mySite.com?name=ssride360
www.mySite.com/ssride360
我知道要从url 1获取name
param,你会这样做:
string name = Request.Params['name'];
但我如何获得第二个网址?
我正在考虑尝试复制网址并删除已知信息(www.mySite.com),然后从那里我可以将name
设置为其余部分。
我该如何制作这样的网址?有没有更好的方法从第二个网址获取'ssride360'?
修改查看SO我发现了一些有关复制网址的信息
string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx
string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx
这对我来说是最好的方式吗?例如,每个网址都有一个额外的参数(mySite.com/ssride360?site=SO)。另外我知道mySite.com/ssride360会在我的项目中引用一个文件夹,所以我不会随身携带该文件(mySite.com/ssride360/Default6.aspx)?
此时我认为有更好的方法然后是网址复制。
建议?
答案 0 :(得分:3)
Uri x = new Uri("http://www.mySite.com/ssride360");
Console.WriteLine (x.AbsolutePath);
打印/ssride360
答案 1 :(得分:1)
此方法将允许您获取名称,即使后面有内容。如果您计划在名称后面添加其他内容并希望获得这些值,那么它也是一个很好的模型。
char [] delim = new char[] {'/'};
string url = "www.mySite.com/ssride360";
string name = url.Split(delim)[1];
然后,如果您有一个URL,其中包含您可以执行的名称后面的ID:
char [] delim = new char[] {'/'};
string url = "www.mySite.com/ssride360/abc1234";
string name = url.Split(delim)[1];
string id = url.Split(delim)[2];
答案 2 :(得分:0)
URL重写是此问题的常见解决方案。您可以为其指定要匹配的URL的模式以及将其更改为的内容。因此,它会检测到www.mySite.com/ssride360并将其转换为www.mySite.com?name=ssride360。网站的用户看到原始网址并且不知道任何更改,但您的代码会看到转换后的网址,以便您可以正常方式访问变量。另一个重要的优点是规则允许您设置转换的模式以及刚刚传递到实际文件夹/文件的模式。
http://learn.iis.net/page.aspx/461/creating-rewrite-rules-for-the-url-rewrite-module/
答案 3 :(得分:-2)
喜欢javascript吗?如果是的话......
<script type="text/javascript">
function getName() {
var urlParts = window.location.pathname.split('/'); //split the URL.
return urlParts[1]; //get the value to the right of the '/'.
}
</script>