如果我有一个类似这样的类:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
public Pet myPet { get; set; }
}
当我创建一个自定义模型绑定器时,我的表单中的Post不会在Pet中发送,它会发送如下数据:firstName:“myFirstName”lastName:“myLastName”myPet:“myPetsName”
由于Pet的名称是传入的,而不是实际的Pet对象,因此需要从模型绑定器中检索Pet对象.
我的问题是,模型绑定器是否应该与服务层,存储库层交互,还是应该检索Pet?服务层的问题是我在初始化服务时似乎没有访问ModelState:((this.ModelState)给我一个错误)
_petService = new PetService(new ModelStateWrapper(this.ModelState));
如果我需要模型绑定器来创建一个Person对象,那么需要以某种方式分配Pet …我该怎么做呢?
最佳答案 我所做的是使用视图/表示模型而不是绑定到业务对象.请记住,您的用户可能会输入无效值,并且在提示用户更正错误时,您需要向用户重新显示这些无效值.但是,您的“真实”业务对象可能不会接受无效值.因此视图模型必须允许任何用户输入,甚至输入业务对象也不会接受.
这使得绑定变得容易.只有在使用(有效)用户输入更新业务对象时,才需要命中存储库进行绑定.