Asp.net mvc ';ErrorMessageResourceType';找不到指定的属性。关于XmlSerialise
在我的ASP.NETMVC应用程序中,我有一个模型层,它在业务对象上使用本地化的验证注释 代码如下所示:Asp.net mvc ';ErrorMessageResourceType';找不到指定的属性。关于XmlSerialise,asp.net-mvc,xml,serialization,annotations,data-annotations,Asp.net Mvc,Xml,Serialization,Annotations,Data Annotations,在我的ASP.NETMVC应用程序中,我有一个模型层,它在业务对象上使用本地化的验证注释 代码如下所示: [XmlRoot("Item")] public class ItemBo : BusinessObjectBase { [Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(StringResource))] [HelpPrompt("ItemNumbe
[XmlRoot("Item")]
public class ItemBo : BusinessObjectBase
{
[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(StringResource))]
[HelpPrompt("ItemNumber")]
public long ItemNumber { get; set; }
这很有效
当我想将对象序列化为xml时,会出现以下错误:
“'ErrorMessageResourceType'指定的属性未找到”(虽然它在其他错误下丢失,但这是我尝试处理的innerexception
因此,问题在于DataAnnotations属性的使用。相关的资源文件位于另一个程序集中,并被标记为“public”,正如我所说的,在我开始序列化之前,一切都很正常
我在nunit测试和目标类中引用了相关的DataAnnotations类等
顺便说一句,HelpPrompt是我在别处定义的另一个数据注释,并没有引起问题
此外,如果我将Required属性更改为标准格式,如下所示,序列化工作正常
[Required(ErrorMessage="Error")]
有人能帮我吗?啊哈,答案比我想象的要简单。简言之,“RequiredField”公共静态属性在StringResource程序集中不存在 问题是查找错误。序列化对象时,我必须捕获尝试实例化serialiser时出现的异常
serial = new XmlSerializer(doc.GetType());
然后通过InnerException的层次结构来分析产生的InvalidOperationException,并得到准确的错误消息,它告诉我出了什么问题:
资源类型“StringResource”没有名为“RequiredField”的公共可见静态属性
现在可以正常工作了啊哈,答案比我预期的简单。简言之,“RequiredField”公共静态属性在StringResource程序集中不存在 问题是查找错误。序列化对象时,我必须捕获尝试实例化serialiser时出现的异常
serial = new XmlSerializer(doc.GetType());
然后通过InnerException的层次结构来分析产生的InvalidOperationException,并得到准确的错误消息,它告诉我出了什么问题:
资源类型“StringResource”没有名为“RequiredField”的公共可见静态属性
现在一切正常