我有一个服务,它有一个在触发某个控制器方法时调用的方法。
我的服务返回一个自定义结果对象PlacementResult,在该对象中,我希望将可能发生的错误(验证)传递给控制器方法。
PlacementResult是否应该有一个ModelState或ModelStateDictionary来将错误传递回控制器(并最终查看)?我该怎么把这些串在一起?
最后,如何将ModelState/ModelStateDictionary (无论您告诉我选择哪个)重新放到视图中(突出显示适当的文本框,显示错误消息等等)?
谢谢!
发布于 2010-08-31 05:23:56
这是一个很好的链接,它展示了服务如何执行验证并将结果传递给控制器:
http://www.asp.net/mvc/tutorials/validating-with-a-service-layer-cs (固定链路)
发布于 2009-08-18 13:45:42
不,您不希望向结果类型中添加ModelStateDictionary。控制器上已经有一个ModelStateDictionary (在ModelState属性中)。对于结果来说,设置控制器的模型状态是不合适的。这应该在绑定期间或在控制器操作本身内完成。如果需要的话,可以使用自定义模型绑定器。
您的选择可以通过检查控制器的ViewData.ModelState属性来查看模型状态错误。
发布于 2010-03-28 23:28:14
您的PlacementResult应该返回一个字典对象或列表,您应该在每个动作开始时与模型状态合并。
如果您跨出一步,您将注意到控制器模型状态字典包含所有输入字段、它们的值以及与它们相关的错误。您希望在适当的键将PlacementResult错误合并到模型状态字典中。这就是视图引擎如何知道哪些字段要标记为无效。
ModelState.Merge(PlacementResult);
if(ModelState.IsValid)
{
...
}https://stackoverflow.com/questions/1291895
复制相似问题