为什么Request.Url中包含查询字符串?

qin*_*126 0 asp.net-mvc request asp.net-mvc-3

在我的一个页面上,我让用户根据他们从年龄下拉列表中选择的年龄来过滤内容.

这是我的代码.

$('#age').change(function () {
         var ageUrl = "@Request.Url?age=" + $(this).val();

         alert(ageUrl);
         window.location = ageUrl;
     });
Run Code Online (Sandbox Code Playgroud)

这是问题所在.我在应用页面上.

http:// localhost:60627/apps

第一次,我选择一个年龄并获得重定向,没问题.

http:// localhost:60627/apps?age = Middle_School

第二次,我选择另一个.

http:// localhost:60627/apps?age = Middle_School?age =幼儿园

在查询中,年龄出现两次.我尝试了Request.Url或Request.RawUrl,总是包含querystring.我应该使用什么来获取没有查询字符串的页面网址.

Nic*_*ork 7

我之前没有真正使用它,但确实有效:

 Request.Url.GetLeftPart(UriPartial.Path)
Run Code Online (Sandbox Code Playgroud)

另一种选择是:

 String.Format("{0}://{1}{2}",Request.Url.Scheme, Request.Url.Authority, Request.Url.LocalPath)
Run Code Online (Sandbox Code Playgroud)

如果您知道您所使用的控制器/操作(来自ViewContext的数据),您可以使用@ Url.Action并指定重载来强制http模式,这也会生成完整的URL.