如果子属性的类型无效,.NET MVC控制器参数将变为null,如何忽略子属性类型?

时间:2019-10-20 16:36:38

标签: c# .net asp.net-mvc .net-4.6.1

我正在使用.NET 4.61,并且有一个简单的控制器方法:

为了举例,它看起来像这样:

[Route("person/{personId:int}/update")]
[HttpPut]
public HttpResponseMessage ModifyPerson(int personId, PersonVM p)
{
..
}

PersonVM定义为:

namespace ViewModels
{
    public class PersonVM
    {
        public string Name { get; set; }
        public CityVM City { get; set; }

    }

    public class CityVM
    {
       public string Name {get;set;}
       public string Mayor {get;set;}
    }
}

现在发出HTTP PUT请求时:

{
 "Person": { Name: "Bob",
             City: { Name: "Houston",
                     Mayor: "Hose" }
           }
}

填充控制器方法中的参数“ p”。但是,如果子属性之一的类型无效,即:

{
     "Person": { Name: "Bob",
                 City: { Name: "Houston",
                         Mayor: 1 } //int, expected string
               }
    }

控制器方法中的参数'p'变为空

现在在我的真实代码中,我的子类/属性要深入几层。如果子类的类型错误,我不希望传递null。

有什么办法只能使它不为null,而仅使该子属性为null?例如,在上面的示例中,市长将为null,而不是整个p。

0 个答案:

没有答案