asp.net-mvc – 对MVC中的模型进行条件验证
发布时间:2020-12-15 23:49:09 所属栏目:asp.Net 来源:网络整理
导读:我有一个视图我用于编辑和插入页面一个记录的模型.业务需求之一是编辑需要某个字段,而不是新的.最初在这个特殊功能之前添加到这个文件夹中,我有这样的模型: [Required(ErrorMessage = "*")][Range(0.0,(double)decimal.MaxValue)][DisplayName("Cost")][Dis
我有一个视图&我用于编辑和插入页面一个记录的模型.业务需求之一是编辑需要某个字段,而不是新的.最初在这个特殊功能之前添加到这个文件夹中,我有这样的模型:
[Required(ErrorMessage = "*")] [Range(0.0,(double)decimal.MaxValue)] [DisplayName("Cost")] [DisplayFormat(DataFormatString = "{0:d}",ApplyFormatInEditMode = true)] public decimal ProposedCost { get; set; } 我想要删除必需的属性,如果它是一个插入的表单,或添加它,如果一个编辑表单.什么是更好的方法?我所有的其他验证都是像上面那样完成.还是可以改变模型状态?思考? 编辑 我应该澄清的是,他们仍然被允许在新的,只是不需要的时候插入成本. 解决方法
如果您使用的是MVC3 / .NET4,则可以使用专门用于此目的的IValidatableObject.
报价ScottGu,
你的模型看起来像 public class MyViewModel : IValidatableObject { public long? Id { get; set; } public decimal? ProposedCost { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (Id != null && ProposedCost == 0) { yield return new ValidationResult("ProposedCost must be provided."); } } } 然后在控制器里, [HttpPost] public ActionResult Submit(MyViewModel model) { if (!ModelState.IsValid) { //failed - report an error,redirect to action etc } //succeeded - save to database etc } 否则,最干净的解决方案是使用视图模型 – 需要属性的UpdateViewModel以及不需要的CreateViewModel. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net中mvc使用ajax提交参数的匹配问题解决探讨
- asp.net – 在Publish上自动压缩html和css?
- asp.net-mvc – NuGet项目>添加库包参考未出现
- asp.net – dbo.aspnet_Users和dbo.aspnetUsers之间有什么区
- 在Asp.Net中发送电子邮件时出错错误代码为0x80040217
- asp.net – 为什么要模拟HttpContext,如果它可以构造?
- asp.net – 代码后面的根运算符(“?”)地址的相对路径
- asp.net-mvc – MVC3 EF4 POCO存储库/ UnitOfWork连接错误
- asp.net – 无法加载文件或程序集’Oracle.DataAccessVersi
- ASP.NET MVC – 根据最后的帖子排序论坛帖子
推荐文章
站长推荐
- 什么是ASP.NET相当于PHP中的memcached?
- wcf – 如何使用Fiddler收听asp.net开发服务器(即
- asp.net-web-api – 设计REST ful ODATA API,结果
- 定期刷新局部视图(ASP.Net MVC)
- asp.net-mvc – 为什么我的动作方法不会超时?
- asp.net – 如何强制ListView以编程方式显示第一
- asp.net – System.InvalidOperationException:
- asp.net-mvc – 如何在asp.Net MVC Razor中单击C
- asp.net-mvc-3 – 如何在ASP .NET MVC 3中验证与
- asp.net – On-Session-expire-event?
热点阅读