首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么servicestack无法对json post请求进行模型绑定?

为什么servicestack无法对json post请求进行模型绑定?
EN

Stack Overflow用户
提问于 2012-07-27 05:54:48
回答 3查看 2K关注 0票数 2
代码语言:javascript
复制
$.ajax({
        type: 'POST',
        url: "/api/student",  
        data:'{"x":3,"y":2}',
        dataType: "json",
        complete: function (r, s) {
            debugger;
        },

        success: function(response){
            debugger;
        },

        contentType: "application/json" // !!!!!!!!!!!! The reason of problem. I could see Json on firebug. It was false-positive for my code !

    });

我已经通过Firebug追踪到流了。Firebug识别并显示了JSON对象。

此代码访问RestServiceBase的OnPost方法.But模型绑定不起作用。Json对象和C#类的属性名必须完全相同吗?

还是我错过了什么?(是的,您遗漏了一些东西!)

PS:我希望把url改成"/api/student/json/asynconeway“,但是我得到了404错误

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-27 07:27:46

我得补充一句

dataType: ajax请求的“应用程序/json”属性!

票数 0
EN

Stack Overflow用户

发布于 2012-07-27 06:43:12

ServiceStack 确实通过模型绑定了JSON POST (以及任何支持的内容类型,包括x-www-form-urlencoded)。

ServiceStack.Examples中有很多这样做的例子。

此代码访问RestServiceBase的OnPost方法.But模型绑定不起作用。

您还没有显示您试图绑定到的DTO是什么。但是这个JSON

代码语言:javascript
复制
{"x":3,"y":2}

将映射到匹配的DTO,例如:

代码语言:javascript
复制
public class Student { 
    public int X { get; set; }
    public int Y { get; set; }
}

对象和C#类上的属性名必须完全相同吗?

它们必须与-的名称相匹配,但不区分大小写,请参见上面的内容。

学生PS:我已经把url改成了“/api/

/json/asynconeway”,但是我得到了404错误。

这是错误的。如果您尝试使用automatic pre-defined route,则正确的url为:

代码语言:javascript
复制
/api/json/asynconeway/student

假设您的请求DTO名为Student

票数 4
EN

Stack Overflow用户

发布于 2012-07-27 06:00:27

下面是我的一些代码:

代码语言:javascript
复制
            $.ajax({
                type: "POST",
                url: "/artist/delete",
                data: { id: itemId },
                success: function () {
                    $("div#" + itemId).fadeOut(function () { $(this).remove(); });
                }
            });

编辑:很抱歉我搞错了你想要什么,所以我会问你一个问题,为什么你要把json发送到服务器上,在那里你可以做这样的函数:

代码语言:javascript
复制
[HttpPost]
        public ActionResult Delete(int id)
        {
            var artist = _db.Artists.Where(x => x.ID == id).SingleOrDefault();
            if (artist == null)
            {
                return Content("false");
            }
            else
            {
                _db.Artists.DeleteOnSubmit(artist);
                _db.SubmitChanges();
                return RedirectToAction("Post");
            }
        }

EDIT2:,这里有语法错误data:'{"x":3,"y":2)}',

EDIT3:另一个语法错误

代码语言:javascript
复制
        }
        }
    });

在代码的末尾。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11678610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档