gpt4 book ai didi

jquery - 使用 jquery 将简单的 json 发布到 MVC 操作 Controller 方法

转载 作者:行者123 更新时间:2023-12-01 06:47:09 24 4
gpt4 key购买 nike

我只是想将一个简单的对象传递给 MVC Controller 方法,而不必为其创建 View 模型。尽管 Controller 方法中的参数被调用,但它始终为空。我的 jquery 帖子如下。

 $(function () {
$("button[id$='addidentifier']").click(function (evt) {
alert('button click');
evt.preventDefault();
var postdata = {
identifier: $('#Identifier').val(),
goldkey: $('#Goldkey').val()
};
$.ajax({
type: 'POST',
url: 'altbloomberg/AddIdentifier',
data: JSON.stringify({ postdata : postdata }) ,
success: function(data) {
alert('data: ' + data);
},
failure: function(a,b,c) {
alert(a);
},
//contentType: "application/json",
dataType: 'json'//,
//processData: false
});
});

Controller 方法很简单,我什至没有完成它的主体,因为我想先获取传入的数据。

    [System.Web.Http.HttpPost]
public ActionResult AddIdentifier(string postdata)
{
// put here to place a breakpoint to look at postdata
string lookhere = "";
}

我看过其他帖子,这就是他们“似乎”表明要做的事情。这看起来应该很容易。那么我在这里做错了什么?

根据下面的一些建议:我更改了 jquery 函数以传递

         $.ajax({
type: 'POST',
url: 'altbloomberg/AddIdentifier',
contentType: "application/json",
dataType: 'json',
data: JSON.stringify(postdata),
success: function(data) {
alert('data: ' + data);
},
failure: function(a,b,c) {
alert(a);
}
});

我刚刚更改了 stringify 方法参数并设置了内容类型,然后将 Controller 参数更改为

    (string identifier, string goldkey).  

这是因为 stringify 方法的结果是

   "{"identifier":"XS0939678792","goldkey":"LAW"}"

那么为什么如果我只在 Controller 方法中使用一个参数

   (String postdata) 

并使用

   JSON.Stringify({postdata:postdata}) 

其结果是

  "{"postdata":{"identifier":"XS0939678792","goldkey":"GOVT"}}" does it NOT work. 

Controller 方法不应该匹配 postdata json 值吗?

最佳答案

我认为您必须创建一个简单的模型来接收数据。

例如,这是您的操作:

[System.Web.Http.HttpPost]
public ActionResult AddIdentifier(PostDataModel postdata)
{

}

其中 PostDataModel 是具有以下结构的简单模型:

class PostDataModel {
public string Identifier {get;set;}
public string GoldKey {get;set;}
}

并且您必须在 ajax 请求中启用此行:

contentType: "application/json",

关于jquery - 使用 jquery 将简单的 json 发布到 MVC 操作 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com