-2

我正在使用实体框架代码优先方法进行项目。我们有一个上下文类、服务、存储库和接口层。我们希望能够在特定实体的服务类中保留验证和任何类型的对象映射。但是,我们真的不喜欢搞乱键值对列表,而且我们觉得将整个表单集合传递给服务会很麻烦。而且,使用从视图传回模型会导致字符串条目转换为数字属性的 0... 停止任何正确的验证。我们知道有实体验证会阻止表单被提交,但如果您要在后端使用验证,我们希望有一层“安全性”。

我们的 google-fu 即将结束!我们的力量毫无用处。

我们想知道是否有任何好的和干净的方法将数据从控制器传递到服务方法的表单集合,而不使用键值对列表、传递集合本身或映射模型?

4

1 回答 1

0

如果您想在 MVC 端保留类型安全模型,我认为这是正确的做法,我认为您最好的选择是在将数据发送到您的服务之前在 MVC 世界中进行一些初始验证。您可以查看您的模型是否有效,并通过以下方式获取所有基本错误:

var errors = ModelState.Values.SelectMany(v => v.Errors);

如果这个集合有任何项目,那么它将包含错误,显示模型映射出错的地方。如果您的客户端验证正常工作,那么这永远不会发生,但您仍然可以在这里得到它,以防他们禁用客户端验证。如果你不能从帖子中生成一个有效的模型,那么即使将它发送到网络服务也是一种浪费,所以别费心了。这意味着用户搞砸了,不值得进行完整的后期验证。所以让他们停在那里。

如果模型是有效的(该集合中没有错误,ModelState.IsValid或所有张贴正确。

于 2013-07-02T20:52:50.887 回答