如果我有类似这样的课程:
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 ...我该怎么做呢?
答案 0 :(得分:2)
我所做的是使用视图/演示模型而不是绑定到业务对象。请记住,您的用户可能会输入无效值,并且在提示用户更正错误时,您需要向用户重新显示这些无效值。但是,您的“真实”业务对象可能不会接受无效值。因此视图模型必须允许任何用户输入,甚至输入业务对象也不会接受。
这使得绑定变得容易。只有在使用(有效)用户输入更新业务对象时,才需要命中存储库进行绑定。