在我的某个页面上,我允许用户根据他们从年龄下拉列表中选择的年龄来过滤内容。
这是我的代码。
$('#age').change(function () {
var ageUrl = "@Request.Url?age=" + $(this).val();
alert(ageUrl);
window.location = ageUrl;
});
这是问题所在。我在应用页面上。
http:// localhost:60627 / apps
第一次,我选择一个年龄并重定向,没问题。
http:// localhost:60627 / apps?age = Middle_School
第二次,我选择另一个。
http:// localhost:60627 / apps?age = Middle_School?age = Preschool
在查询字符串中,年龄出现两次。我尝试了Request.Url或Request.RawUrl,总是包含querystring。我应该使用什么才能获得没有查询字符串的页面网址。答案 0 :(得分:7)
我之前没有真正使用它,但确实有效:
Request.Url.GetLeftPart(UriPartial.Path)
另一种选择是:
String.Format("{0}://{1}{2}",Request.Url.Scheme, Request.Url.Authority, Request.Url.LocalPath)
如果您知道您所使用的控制器/操作(来自ViewContext的数据),您可以使用@ Url.Action并指定重载以强制生成完整URL的http模式。
答案 1 :(得分:1)
为什么不尝试使用Split
字符串方法?
Request.Url.ToString().Split('?')[0]
答案 2 :(得分:1)
您为什么要自己构建网址?让MVC为你做:
@Url.Action("Action", "Controller", new { age = "Preschool" })
如果年龄不是路线的一部分,那么它将自动添加到查询字符串中:
http://localhost:12345/Controller/Action?age=Preschool
答案 3 :(得分:0)
这不是Request的属性,但它可以为您提供解决方案。 https://stackoverflow.com/a/2541083/969829