Asp.net mvc ';ErrorMessageResourceType';找不到指定的属性。关于XmlSerialise

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

在我的ASP.NETMVC应用程序中,我有一个模型层,它在业务对象上使用本地化的验证注释

代码如下所示:

[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”的公共可见静态属性

现在一切正常