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

tga*_*ard 5 c# asp.net-mvc

我正在写一个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)

jrb*_*jrb 1

好吧,你必须将传入的值与你想要更新的值进行比较。我的意思是 null 就是 null 就是 null :) Alt。在模型中设置更新标志 (bool isUpdate),然后仅更改不为空的值。