Odata 如何从web api的模型状态中排除导航属性验证

Odata 如何从web api的模型状态中排除导航属性验证,odata,asp.net-web-api2,asp.net-mvc-5.1,Odata,Asp.net Web Api2,Asp.net Mvc 5.1,我正在使用Asp.NETMVC5与WebAPI2和OData。我在web api中使用ODataController。我有一个contact类,它有一个导航属性company,company在其name属性上有一个必需的属性。在web api联系人控制器的post操作中,我在保存数据之前检查ModelState.IsValid。现在的问题是,当我在web api上发布联系人数据时,它的ModelState.IsValid属性每次都返回false,因为公司导航属性有一个带有必需属性的属性名。所以模

我正在使用Asp.NETMVC5与WebAPI2和OData。我在web api中使用ODataController。我有一个contact类,它有一个导航属性company,company在其name属性上有一个必需的属性。在web api联系人控制器的post操作中,我在保存数据之前检查ModelState.IsValid。现在的问题是,当我在web api上发布联系人数据时,它的ModelState.IsValid属性每次都返回false,因为公司导航属性有一个带有必需属性的属性名。所以模型状态抛出错误名称字段是必需的。因此,请帮助我从验证检查中排除公司导航属性。希望得到一些积极的回应。 谢谢

我也有同样的问题。 实际上,这种类型的问题只发生在OdataController中。MvcController操作忽略导航属性验证。

我也遇到同样的问题。 实际上,这种类型的问题只发生在OdataController中。MvcController操作忽略导航属性验证。

我也遇到同样的问题。 实际上,这种类型的问题只发生在OdataController中。MvcController操作忽略导航属性验证。

我也遇到同样的问题。
实际上,这种类型的问题只发生在OdataController中。MvcController操作忽略导航属性验证。

@FengZhao MSFT感谢您的回复,但我找到了此问题的主要原因。这是因为当我发布联系人对象时,它也会在发布的数据中发送company=“”,companyID=1,其中company是联系人的导航属性。因此,当数据转到post方法时,此company=”“将由此产生问题,它将创建一个新的company实例,并为所需的名称字段抛出模型状态错误。如果我们从发布的数据中删除company=“”,并且只发送companyID,问题就解决了。还有一件事,我们对所有资源都使用了一个通用的ajax post方法,因此我们不能从请求中排除comapny=“”。现在,我们使用actionfilter在服务器端排除了它,我们从modelstate中删除了公司验证错误。谢谢你的回复,但我找到了这个问题的主要原因。这是因为当我发布联系人对象时,它也会在发布的数据中发送company=“”,companyID=1,其中company是联系人的导航属性。因此,当数据转到post方法时,此company=”“将由此产生问题,它将创建一个新的company实例,并为所需的名称字段抛出模型状态错误。如果我们从发布的数据中删除company=“”,并且只发送companyID,问题就解决了。还有一件事,我们对所有资源都使用了一个通用的ajax post方法,因此我们不能从请求中排除comapny=“”。现在,我们使用actionfilter在服务器端排除了它,我们从modelstate中删除了公司验证错误。谢谢你的回复,但我找到了这个问题的主要原因。这是因为当我发布联系人对象时,它也会在发布的数据中发送company=“”,companyID=1,其中company是联系人的导航属性。因此,当数据转到post方法时,此company=”“将由此产生问题,它将创建一个新的company实例,并为所需的名称字段抛出模型状态错误。如果我们从发布的数据中删除company=“”,并且只发送companyID,问题就解决了。还有一件事,我们对所有资源都使用了一个通用的ajax post方法,因此我们不能从请求中排除comapny=“”。现在,我们使用actionfilter在服务器端排除了它,我们从modelstate中删除了公司验证错误。谢谢你的回复,但我找到了这个问题的主要原因。这是因为当我发布联系人对象时,它也会在发布的数据中发送company=“”,companyID=1,其中company是联系人的导航属性。因此,当数据转到post方法时,此company=”“将由此产生问题,它将创建一个新的company实例,并为所需的名称字段抛出模型状态错误。如果我们从发布的数据中删除company=“”,并且只发送companyID,问题就解决了。还有一件事,我们对所有资源都使用了一个通用的ajax post方法,因此我们不能从请求中排除comapny=“”。现在,我们使用actionfilter在服务器端排除了它,我们从modelstate中删除了公司验证错误。谢谢

是的,你说得对
company=”“
是问题的根本原因

我不知道如何使用ajax post方法,但是您可以尝试将
company=”“
更改为
company=null
,然后请求主体应该是

{
....
"company":null
...
}

我认为这个要求会奏效。(我不知道ajax能否做到这一点。)

是的,你是对的
company=”“
是问题的根本原因

我不知道如何使用ajax post方法,但是您可以尝试将
company=”“
更改为
company=null
,然后请求主体应该是

{
....
"company":null
...
}

我认为这个要求会奏效。(我不知道ajax能否做到这一点。)

是的,你是对的
company=”“
是问题的根本原因

我不知道如何使用ajax post方法,但是您可以尝试将
company=”“
更改为
company=null
,然后请求主体应该是

{
....
"company":null
...
}

我认为这个要求会奏效。(我不知道ajax能否做到这一点。)

是的,你是对的
company=”“
是问题的根本原因

我不知道如何使用ajax post方法,但是您可以尝试将
company=”“
更改为
company=null
,然后请求主体应该是

{
....
"company":null
...
}
我认为这个要求会奏效。(我不知道ajax是否能做到这一点。)

没有“公司”:null不起作用。它还创建了类似于“company”:“的company对象,所以唯一的解决方案是发布ajax请求而不在数据中发送“company”。

否“company”:null不起作用