目前,我看到DefaultModelBinder错误,因为输入对于类型无效(int中的字符,无效日期等)我得到UI默认错误摘要“出错了......”但没有特定的错误消息,关于转换失败的具体属性。
例如,模型属性可能是将来需要发生的日期时间。它可能使用Validator属性进行修饰,该属性将给出错误“{Property}”是将来需要发生的日期。例4/15/2009“。该消息仍可能与类型转换错误相关。
如果在模型绑定期间类型转换失败,如何提供描述性错误消息?自定义模型粘合剂,过滤器,任何示例都将不胜感激。
旁注:我一直在测试NHib Val,Castle Val,xVal Lib和其他更多手动方法的实现,所有这些对我来说都很好,但我不认为这些对我有帮助类型转换问题......
更新: 我在MVC Codeplex问题列表中找到了涉及S. Sanderson(xVal的创建者)的交换。它更详细地讨论了我所看到的问题...... http://aspnet.codeplex.com/WorkItem/View.aspx?WorkItemId=3230
答案 0 :(得分:0)
我个人喜欢使用属性和c#代码在实体中进行验证,所以我认为以下方法至少值得一看:
它使实体实现IDataErrorInfo。除了检查每个属性的验证属性之外,您还可以检查空值或无效的强制转换或任何其他自定义逻辑,如下所示:
当它发生时:
public string this[string columnName]
{
get
{
return DoValidation(columnName);
}
}
您可以执行以下操作:
public string this[string columnName]
{
get
{
if(columnName=="myDatePropertyName")
{
//Add custom logic (invalid casts or whatever)
}
return DoValidation(columnName);
}
}
我不喜欢这个模型,例如,必须在每个属性中放置验证错误消息,但这是一个很好的开始。
无论如何,这是一个将自定义错误绑定到相关属性的模型示例,因此稍后会在ValidationSummary上显示。
希望这有帮助!