ajax - AJAC MVC3 Request 对象和原始 Ajax 数据到底在哪里?

标签 ajax asp.net-mvc-3 httpresponse

如果这是表单的常规帖子,我可以转到 Request.Form['somevalue'] 并获取值。如果这是带有查询字符串的获取,我可以转到 Request.QueryString["somevalue"] 并获取值。

当你发出ajax请求时,原始数据在哪里?我需要过滤器方法中原始数据字符串中的值。

任何帮助将不胜感激!!

编辑如下:

public class ValidateAntiForgeryId : FilterAttribute, IAuthorizationFilter {
    public void OnAuthorization(AuthorizationContext filterContext) {
        if (filterContext == null) {
            throw new ArgumentNullException("filterContext");
        }

        Guid filterGuid;
        Guid.TryParse(filterContext.RequestContext.HttpContext.Request.Form["__sessionId"], out filterGuid);

        if (filterGuid == Guid.Empty)
            throw new AuthenticationException("Authentication failure");
        try {
            var cookieGuid = (Guid)filterContext.RequestContext.HttpContext.Items["SessionId"];
        } catch {
            throw new AuthenticationException("Authentication failure");
        }
    }

发布的数据如下所示:

{"SsnLastFour":"2222","AccountNumber":"B112233","__sessionId":"dca0a504-3c40-4118-ae19-afefb9bfc8bd"}

我需要访问过滤器内的 __sessionId block 。

最佳答案

AJAX 帖子没有什么神奇之处。它们只是普通的旧 HTTP。这意味着您有普通的旧式 HTTP post 值和/或普通式旧式 HTTP Get 值。

如果您没有看到它们,则可能意味着您实际上并未提交它们。

编辑:

您在原始问题中没有包含两个问题:1)这是 JSON,2)这是在 AuthorizationFilter 中(而不是操作方法)。

两者都改变​​了答案。由于 ASP.NET 本身并不理解 JSON post 值,因此您必须通过 Request.InputStream 解析它们。 MVC3 默认情况下有一个 JSON 模型绑定(bind)器,但 AuthorizationFilters 在模型绑定(bind)器之前执行,因此您将在执行模型绑定(bind)器之前访问事物,因此 FormsCollection 将不会被填充(Request.Form[] 将不起作用或者,因为正如我所说,asp.net 本身并不理解 JSON)。

您可能会发现通过 nuget 安装 JSON.net 可能有助于完成此任务。或者您可能只编写一个简单的解析例程,因为您确切地知道自己在寻找什么。

关于ajax - AJAC MVC3 Request 对象和原始 Ajax 数据到底在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10393250/

相关文章:

javascript - 在 PHP 中使用 Jquery 和 Ajax 的动态依赖选择框

jquery - 将整个页面替换为 ajax 加载页面的内容

asp.net-mvc-3 - 填充基本 View 模型的最佳方法

c# - 如何创建可以与网站交互的 win 应用程序?

javascript - 如何在浏览器中手动输入 POST 数据

Javascript 如何在用户尝试退出或刷新页面时触发函数

asp.net-mvc-3 - "Who is online"ServiceStack 功能

javascript - 动态创建嵌套的 JSON 对象

java - 如果容器身份验证失败,如何修改 Java servlet 响应 header ?

使用 cron 作业检查网络服务器状态的 PHP 脚本