小编tga*_*ard的帖子

区分 ASP.NET MVC4 中的空参数和缺失参数

我正在写一个API。我想允许 PUT 方法来更新资源。下面是代表资源的示例模型对象 -

var resourceToUpdate = new TestResourceModel() 
    {
        Id = 5
        Name = "testName",
        Description = "description",
        etc...
    }
Run Code Online (Sandbox Code Playgroud)

我希望客户端能够 PUT 到 /TestResource/5 以更新资源的属性

现在,假设客户端只想更新属性名称,而不是描述,因此发送以下请求:

Name="testNewName"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,应该更新资源,因此名称现在是“testNewName”,说明仍然是“description”

如何区分这种情况(在我的 Controller 方法中)与客户端想要将 Description 属性设置为 null 的情况:

Name="testNewName"
Description=
Run Code Online (Sandbox Code Playgroud)

因为我的控制器方法如下所示:

[HttpPut]
public ActionResult Index(TestResourceModel model)
{
    //True in both cases
    bool descriptionSet = model.Description == null;
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

5
推荐指数
1
解决办法
379
查看次数

Ruby on Rails JSON序列化

我是Ruby on Rails的新手,所以如果这是一个明显的问题,请原谅我.

我从控制器方法返回一个JSON对象(假设类名是"foo",它有一个属性"bar").

我希望这可以序列化为:

{"bar" : "barValue" }
Run Code Online (Sandbox Code Playgroud)

但是,它似乎序列化为

{"foo" : {"bar" : "barValue"}}
Run Code Online (Sandbox Code Playgroud)

这似乎与a.)其他语言的关联,b.)(更重要的是)javascript的作用.

假设我在Javascript中定义了相同的类foo:

var fooInstance = new Foo();
fooInstance.bar = "barValue";
Run Code Online (Sandbox Code Playgroud)

然后我使用一个Javascript JSON库(例如https://github.com/douglascrockford/JSON-js)对其进行字符串化.然后输出是这样的:

{"bar" : "barValue" }
Run Code Online (Sandbox Code Playgroud)

但是我的控制器方法的输入(以及输出)期望:

{"foo" : {"bar" : "barValue"}
Run Code Online (Sandbox Code Playgroud)

所以我必须沿着这些行编写代码才能使它工作:

var fooInstance = new Foo();
fooInstance.bar = "barValue";
var dummyObjectToKeepRailsHappy = { foo : fooInstance};
Run Code Online (Sandbox Code Playgroud)

所以我做Rails序列化不正确吗?或者它有这样的原因吗?

ruby serialization json ruby-on-rails

3
推荐指数
1
解决办法
2782
查看次数

标签 统计

asp.net-mvc ×1

c# ×1

json ×1

ruby ×1

ruby-on-rails ×1

serialization ×1