我目前正在使用单个操作来处理 2 个使用单独 ViewModel 的视图,如下所示:
[HttpPost]
public ActionResult(PrivateCustomer p, CorporateCustomer c)
{
if(Modelstate.IsValid) { ... }
}
我的视图模型如下所示:
public abstract class Customer
{
public string Name {get; set;}
public string UserName {get; set;}
...
}
public class PrivateCustomer: Customer
{
...
}
public class CorporateCustomer: Customer
{
[Required]
public new string Name {get; set;}
}
这意味着我可以为两个(密切相关的)视图模型使用 1 个 url/action。但是,问题是,我接受两个视图模型作为我的发布操作的参数,并且两者都会进行模型验证(即使我只会使用一个)。
鉴于我发布了一个不需要名称的 PrivateCustomer,我仍然会在该属性上收到验证错误。
我想知道是否有一种优雅的方法可以以某种方式防止这种情况发生,最好不要手动从我的 ModelState 中删除错误。
最好的办法是只验证这两个对象中的任何一个。
在此先感谢您的任何建议。