c# - 将 post 参数传递给 asp.net mvc 中的操作方法?

标签 c# asp.net-mvc http

我是 asp.net mvc 的新手。我在获取 Action 方法中的参数值时遇到了一些问题。

我有以下代码:

[HttpPost]
public ActionResult ToggleRecommend(string mode)
{
    byte[] requestContent = new byte[Request.ContentLength];
    Request.InputStream.Read(requestContent, 0, Request.ContentLength);
    string content = Encoding.ASCII.GetString(requestContent);

    return EmptyResult();
}

我使用 Ajax 请求访问此方法。该请求具有以下 header :

Accept  application/json
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Connection  keep-alive
Content-Length  8
Content-Type    text/plain; charset=UTF-8
Host    localhost:62718
Referer http://localhost:62718/microsite
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
X-Request   JSON
X-Requested-With    XMLHttpRequest

还有这个 body :

mode=off

我的问题是 ToggleRecommendmode 参数没有填充请求中的值 - 相反,它为 null。

请求正确到达我的服务器:方法中的变量 content 的值为 mode=off 并且 Request.ContentLength 为 8正如预期的那样。此外,Request.RequestType 是预期的“POST”。但是,Request.Form 是空的:它没有键或值。 (我不知道这是否相关)。

这里出了什么问题?如何获取我的 mode 参数的值以进入我的操作方法?

问题一定与帖子有关:如果我删除 HttpPost 属性并对 Url localhost:62718/microsite/toggleRecommend/?mode=off mode 参数按预期获得值 off

编辑:

请求是通过使用 Mootools 库的 javascript 发出的。我已经包含了下面的那部分代码:

var req = new Request.JSON({ method: "post",
        url: "/microsite/toggleRecommend/" ,
        autoCancel: true, urlEncoded: false, secure: false,
        onFailure: recommendFail, onException: recommendFail,
        onSuccess: recommendSuccess
    });

    req.send({ data: { mode: 'on'} });

使用 firebug,我可以看到请求的确切格式(看起来不错),所以希望 javascript 代码的细节无关紧要。

最佳答案

你的 ajax 调用内容/类型是 text/html,你需要向你的 Controller 指定你正在发送 application/json 信息,否则他会收到信息,但不知道如何将它分发给它的参数

关于c# - 将 post 参数传递给 asp.net mvc 中的操作方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12712199/

相关文章:

c# - 如何中止 ASP.NET MVC 中的操作

http - 使用 'wget' 获取的 HTML 文件被 'less' 报告为二进制

java - Android 应用程序的 HTTP 接口(interface)

javascript - 无法在服务器端 NodeJS 上启用 CORS

c# - 将相同的对象保存在不同的表中

c# - 将 ViewModel 定义为 DependencyProperty 以进行数据绑定(bind)是一种不好的做法吗?

c# - 隐藏ListBox控件中的垂直滚动条

c# - 错误无法从程序集 'dotless.Core,版本 = 1.5.3.0 加载类型 'dotless.Core.configuration.WebConfigConfigurationLoader'

c# - MVC 中同一接口(interface)的 CaSTLe Windsor 多重实现

c# - 使用静态记录器、静态帮助程序类进行依赖注入(inject)