c# - 如何使用查询字符串和哈希重定向到另一个 Controller ?

标签 c# .net asp.net-mvc c#-4.0 asp.net-mvc-4

根据条件,如何重定向到另一个 Controller 和操作,同时处理 URL 中的任何查询字符串和位置哈希。有内置的方法可以做到这一点吗?

最佳答案

浏览器在执行 HTTP 请求时从不将哈希部分发送到服务器。因此,您无法重定向并保留哈希值,因为您不知道哈希值,它从未到达服务器。一些技术包括在调用 Controller 操作之前使用 javascript,该 Controller 操作应该执行重定向并以某种方式操作 url,以便将哈希部分作为查询字符串参数发送。因此,一旦您调用此 Controller 操作,您将能够生成一个带有哈希值 GenerateUrl 的 url。方法:

public ActionResult Blah(string hash)
{
    ... do something

    // Generate the url to redirect to using a hash
    var url = UrlHelper.GenerateUrl(
        null,                             // routeName
        "Foo",                            // actionName
        "Bar",                            // controllerName
        null,                             // protocol
        null,                             // hostName
        hash,                             // fragment
        null,                             // routeValues
        RouteTable.Routes,                // routeCollection
        ControllerContext.RequestContext, // requestContext
        false                             // includeImplicitMvcValues
    );

    return Redirect(url);
}

关于c# - 如何使用查询字符串和哈希重定向到另一个 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387874/

相关文章:

c# - 如何使用 Moq 为接口(interface)模拟 `object.Equals(object obj)`

c# - 替换第二次出现的 ?与 &

c# - "Copy if newer"文件更新时为什么不复制文件?

c# - 正则表达式,在两个词之间找一个词

asp.net-mvc - IIS Express 自动为我的项目禁用匿名身份验证,为什么?

asp.net-mvc - 无论所有其他设置如何,IIS 7.5 session 都会在 30 分钟后超时

c# - 如何确保可以加载 auth.dll?

C#:在对用户进行身份验证时,将密码哈希与用户输入的不同大小进行比较

c# - 设计推荐 : Lazy init of objects in an array

asp.net-mvc - 自定义 Controller 工厂的问题