Mvc4 RTM验证抛出一个错误 [英] Mvc4 RTM validation throwing an error

查看:195
本文介绍了Mvc4 RTM验证抛出一个错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有一些与有关模型的验证RTM比特改变。

Has something changed with the rtm bits regarding the validation of models.

我有一个简单的视图模型,看起来像

I have a simple viewmodel that looks like

    public class ProductViewModel
    { 
    [Required]
    [DataMember(IsRequired = true)]
    public int ProductTypeId { get; set; }
    public string Product { get; set; }
    }

(我刚刚添加的数据成员(IsRequired =真)作为错误信息让我说用它来解决这个问题。但没有喜悦)

(I just added the DataMember(IsRequired = true) as the error message I get says to use it to fix the problem. However no joy)

在我的控制器模型的状态告诉我模型是有效但是当我尝试使用RestSharp我得到以下错误的模型传递给我的API。

Within my controller the model state is telling me model is valid however when I try passing the model to my api using RestSharp I get the following error.

{消息:发生错误,ExceptionMessage:物业'ProductTypeId上键入Mine.Model.Model'是无效值类型属性标记为[必填]也必须标记与[数据成员(IsRequired = TRUE)被确认为需要考虑归因使用[DataContract]声明类型,并通过[数据成员(IsRequired = TRUE)],ExceptionType属性:System.InvalidOperationException,堆栈跟踪:在System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata元数据对象容器)\\ r \\ n在System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata元,validationContext validationContext,对象容器)\\ r \\ n在System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata元,validationContext validationContext,对象容器)\\ r \\ n在System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata元,validationContext validationContext) \\ r \\ n在System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata元,validationContext validationContext,对象容器)\\ r \\ n在System.Web.Http.Validation.DefaultBodyModelValidator.Validate(对象模型,类类型,ModelMetadataProvider metadataProvider,HttpActionContext ActionContext中,串键preFIX个)\\ r \\ n在System.Web.Http.ModelBinding.FormatterParameterBinding&LT;> C_的 DisplayClass1.b 的_0(对象模型)\\ r \\ n在System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass36<$c$c>1.<>c__DisplayClass38.<Then>b__35()\\r\
在System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass49.<ToAsyncVoidTask>b__48()\\r\
在System.Threading.Tasks.TaskHelpers.RunSynchronously [TResult](Func键 1 FUNC键的CancellationToken的CancellationToken)}

{"Message":"An error has occurred.","ExceptionMessage":"Property 'ProductTypeId' on type 'Mine.Model.Model' is invalid. Value-typed properties marked as [Required] must also be marked with [DataMember(IsRequired=true)] to be recognized as required. Consider attributing the declaring type with [DataContract] and the property with [DataMember(IsRequired=true)].","ExceptionType":"System.InvalidOperationException","StackTrace":" at System.Web.Http.Validation.Validators.ErrorModelValidator.Validate(ModelMetadata metadata, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.Validate(Object model, Type type, ModelMetadataProvider metadataProvider, HttpActionContext actionContext, String keyPrefix)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.<>c_DisplayClass1.b_0(Object model)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass361.<>c__DisplayClass38.<Then>b__35()\r\n at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass49.<ToAsyncVoidTask>b__48()\r\n at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func1 func, CancellationToken cancellationToken)"}

我不是有这个问题与RC位,但后来我只开始使用restsharp libary与RTM位。

I wasnt having this problem with the rc bits but then I have only started to use the restsharp libary with the rtm bits.

任何帮助将是巨大的。

推荐答案

在除了添加[数据成员(IsRequired = TRUE)的财产,你还需要确保属性[DataContract]是在应用一流的水平。

In addition to adding [DataMember(IsRequired = true)] to the property, you'll also need to ensure that the attribute [DataContract] is applied at the class level.

这篇关于Mvc4 RTM验证抛出一个错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆