Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP MVC-确定模型绑定参数是null还是未传递_C#_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

C# ASP MVC-确定模型绑定参数是null还是未传递

C# ASP MVC-确定模型绑定参数是null还是未传递,c#,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc 4,Asp.net Web Api,在ASP MVC Web API中,如果我有这样一个模型类: class UpdateModel { public string name { get; set; } public Date date { get; set; } public string type { get; set; } } public object Update(UpdateModel m) { // update the object in the database accordi

在ASP MVC Web API中,如果我有这样一个模型类:

class UpdateModel
{
    public string name { get; set; } 
    public Date date { get; set; }
    public string type { get; set; }
}
public object Update(UpdateModel m)
{
    // update the object in the database according to the passed model
}
还有这样一种方法:

class UpdateModel
{
    public string name { get; set; } 
    public Date date { get; set; }
    public string type { get; set; }
}
public object Update(UpdateModel m)
{
    // update the object in the database according to the passed model
}

如果用户发布了一个类似{“type”:“banana”}的JSON对象并省略了名称,我如何判断用户正在尝试更新类型,但他们根本不想更新名称?而如果他们传递{“name”:null,“type”:“banana”},则表示他们想要更新名称,并且希望名称为null,因为在update()方法中,模型看起来是相同的

为什么不将null处理为不更新,将string.empty(“”)处理为名称为空的更新?您是否查看过,因为这样您如何区分不更新和设置为“”并设置为null?是的,我检查了该链接,它验证了模型是否已传递,但有助于确定是否传递了可为null的属性。您需要对此应用自己的规则,而不是假设用户正在尝试持久化什么。如果name属性返回null,则假定他们不想更新它或要求发送整个模型。如@ricoster所述,如果您不需要传递整个模型,那么这似乎是最好的解决方案。如果传递了整个模型,那么您就知道name属性是否发生了更改。您需要在服务器上或来自客户端的引用来了解用户的意图。