在ASP.NET MVC控制器中,如何使Redirect(字符串URL)方法不附加“#”?

时间:2015-10-15 21:15:40

标签: c# asp.net asp.net-mvc

我在ASP.NET MVC 5项目中有一个控制器,它返回Redirect(url)的结果,其中url是一个字符串。

基本上我有这个:

''

浏览器中的结果是加载如下网址:http://example.com/calendar/addevent#

这在IE中很好用,但是由于'#',Chrome会滚动到页面底部寻找锚点。

有关如何在网址末尾不包含“#”的想法吗?

2015年10月21日更新

这是使用单用户身份验证在模板MVC 5项目中找到的Account控制器中从此方法返回的:

print ''

Url.IsLocalUrl为true,如果我调试并读取从Redirect返回的对象(r​​eturnUrl),则URL没有“#”。浏览器仍以某种方式获得它......

3 个答案:

答案 0 :(得分:0)

你可以使用如下的Url.Action:

var url = Url.Action("ActionName" ,"ControllerName");
return Redirect(url);

或者

return RedirectToAction("ActionName" ,"ControllerName");

答案 1 :(得分:0)

由于Google的OAuth响应,我发现这种情况正在发生。他们在回复中的查询字符串以'#'结尾。因此,Account控制器中的Redirect方法返回302响应,该响应正确地保留了哈希。好的比喻 - > https://stackoverflow.com/a/5283528/2354959

所以ASP.NET MVC控制器正常工作......

答案 2 :(得分:-1)

参见示例Controller ActionResult

//Parameter can also be FormCollection
    public ActionResult eventview(string url){ 
           string[] splitURL=url.split('/');  //Considering URL - "calendar/addevent"
           return RedirectToAction(splitURL[1],splitURL[0]);
    }