将纯文本发送到控制器mvc4

时间:2016-08-04 10:31:27

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

如何将纯文本发送到控制器

public ActionResult mappingNodes(string model) {
    var test = model;
    return Json(new { foo = "bar"});
}

通过邮寄方式:

 $http.post("/msm/test/mappingNodes", postModel, { headers: { 'Content-Type': 'text/plain'}})

如果我选择postModel字符串如“abc”或'{model : "abc"}',我会在控制器端获得null。

如果我将参数Content-Type更改为application/jason,如果postModel设置为'{model : "abc"}' postModel,则我会在控制器端获得“abc”设置为“abc”我在errorCallback函数中得到错误状态Code 500。

4 个答案:

答案 0 :(得分:1)

您应该将数据发送到javascript数组中的控制器,如下所示:

$http.post("/msm/test/mappingNodes", { model : postModel }, { headers: { 'Content-Type': 'text/plain'}})

注意,控制器model中的参数名称必须与javascript数组中的键model匹配。

答案 1 :(得分:0)

您可以使用服务器URL附加文本。

像这样:

$http.post("/msm/test/mappingNodes/yourtext", postModel, { headers: { 'Content-Type': 'text/plain'}})

或者,如果值在变量中:

$http.post("/msm/test/mappingNodes/" + value, postModel, { headers: { 'Content-Type': 'text/plain'}})

答案 2 :(得分:0)

通过查询字符串(url encoded):

$http.post("/msm/test/mappingNodes?postModel=" + postModel)

或将其包含在帖子数据中:

$http.post("/msm/test/mappingNodes", { postModel: "myvalue" })

答案 3 :(得分:0)

使用[FromBody]参数属性

更新您的操作
public ActionResult mappingNodes([FromBody]string model) {
    var test = model;
    return Json(new { foo = "bar"});
}

以下是客户端请求示例。

POST http://localhost:5076/msm/test/mappingNodes HTTP/1.1
User-Agent: Fiddler
Host: localhost:5076
Content-Type: text/plain
Content-Length: 5

"abc"