asp.net-mvc – 如何使用Autotyper和Betty方法将DataAnnotation
发布时间:2020-12-16 03:16:10 所属栏目:asp.Net 来源:网络整理
导读:我需要澄清如何实现Betty的代码解决方案,以便使用AutoMapper将数据注释元数据传输到ViewModel(参见 here).或者,如果你有更好的方法,请分享.也许对于熟悉AutoMapper的人来说,实现贝蒂的答案是显而易见的,但我是新手. 这是一个简单的例子,我将如何添加到此代码
我需要澄清如何实现Betty的代码解决方案,以便使用AutoMapper将数据注释元数据传输到ViewModel(参见
here).或者,如果你有更好的方法,请分享.也许对于熟悉AutoMapper的人来说,实现贝蒂的答案是显而易见的,但我是新手.
这是一个简单的例子,我将如何添加到此代码中以使Betty的解决方案工作: // Data model Entity public class User1 { [Required] public int Id { get; set; } [Required] [StringLength(60)] public string FirstName { get; set; } [Required] [StringLength(60)] public string LastName { get; set; } [Required] [DataType(DataType.Password)] [StringLength(40)] public string Password { get; set; } } // ViewModel public class UserViewModel { public string FirstName { get; set; } public string LastName { get; set; } public string Password { get; set; } } 当前的AutoMapper实现: // Called once somewhere Mapper.CreateMap<User1,UserViewModel>(MemberList.Destination); // Called in controller method,or wherever User user = new User() { FirstName = "Tony",LastName = "Baloney",Password = "secret",Id = 10 }; UserViewModel userVM = Mapper.Map<User,UserViewModel>(user); // NOW WHAT??? 我在Application_Start中的global.asax中尝试过这个: var configProvider = Mapper.Configuration as IConfigurationProvider; ModelMetadataProviders.Current = new MetadataProvider(configProvider); ModelValidatorProviders.Providers.Clear(); // everything's broke when this is not done ModelValidatorProviders.Providers.Add(new ValidatorProvider(configProvider)); 另外,我不得不修改Betty的GetMappedAttributes: propertyMap.DestinationProperty.GetCustomAttributes: (或者代替MemberInfo,是MemberType吗?)为此甚至构建. 但似乎没有任何效果. 解决方法
Automapper不使用元数据提供程序,它使用Automapper.
您不需要直接调用它,只要您在Global.asax.cs中启动时将其注册到MVC,它就会被MVC自动调用,例如: ModelMetadataProviders.Current = new MetadataProvider( AutoMapper.Mapper.Engine.ConfigurationProvider); ModelValidatorProviders.Providers.Add(new ValidatorProvider( AutoMapper.Mapper.Engine.ConfigurationProvider); 要么: ModelMetadataProviders.Current = new MetadataProvider( (AutoMapper.IConfigurationProvider)AutoMapper.Mapper.Configuration); ModelValidatorProviders.Providers.Add(new ValidatorProvider( (AutoMapper.IConfigurationProvider)AutoMapper.Mapper.Configuration)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 两次调用HttpModule EndRequest处理程序
- asp.net-mvc – 有一个强大的方法来删除ASP.NET MVC中的Mod
- asp.net-mvc-3 – razor语法:使用ifs和div循环
- asp.net – Sitecore Droplink字段中的最大结果数量?
- ASP.Net添加控件“无法获取[控件]的内部内容,因为内容不是文
- ASP.NET迁移中的Discriminator列是什么?
- asp.net – “<%:”做什么?
- “超频”处理ASP.NET应用的技术
- asp.net – CookieContainer和Response.Cookies集合有什么区
- asp.net – 服务器端声明缓存与Owin身份验证
推荐文章
站长推荐
- .net – Cache.Add绝对到期 – 是否基于UTC?
- .net core下验证码及二维码登录的实现
- asp.net – Mono apache2 =服务暂时不可用(503)
- asp.net – 使用app_offline.htm使应用程序脱机,
- asp.net – 如何通过命令按钮发送多个命令参数?
- 定时器_在.net core3.0 webapi中添加自定义定时器
- asp.net-mvc – Elmah.MVC对Elmah.contrib.Mvc
- asp.net-mvc – MVC 4. IIS 7.5 PUT返回405
- 在ASP.NET中更改doctype
- 在ASP.NET中验证上载文件的ContentType
热点阅读