4

如果我有类似的课程:

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 对象。

我的问题是,模型绑定器应该与服务层、存储库层交互,还是应该检索宠物?服务层的问题是我在初始化服务时似乎无法访问 ModelState:((this.ModelState)给我一个错误)

_petService = new PetService(new ModelStateWrapper(this.ModelState));

如果我需要模型绑定器来创建一个 Person 对象,那么需要以某种方式分配 Pet ......我应该怎么做?

4

1 回答 1

2

我所做的是使用视图/表示模型而不是绑定到业务对象。请记住,您的用户可能会输入无效值,并且在提示用户更正错误时,您需要向用户重新显示这些无效值。但是您的“真实”业务对象可能不会接受无效值。所以视图模型必须允许任何用户输入,即使是业务对象不接受的输入。

这使绑定变得容易。只有在使用(有效)用户输入更新业务对象时,您才需要点击存储库进行绑定。

于 2009-07-13T15:44:07.560 回答