asp.net-mvc – 对MVC中的模型进行条件验证
|
我有一个视图&我用于编辑和插入页面一个记录的模型.业务需求之一是编辑需要某个字段,而不是新的.最初在这个特殊功能之前添加到这个文件夹中,我有这样的模型: [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 – project.json中的“依赖关系”和“框架集”之间
- 实现ASP.NET多文件上传程序代码
- asp.net-mvc – 如何在ASP.NET MVC 2 RC中编写自定义客户端
- asp.net-web-api – 在WebApi2帮助页面中启用文档
- 从ASP.NET应用程序删除目录返回到新会话
- 通过asp.net中的C#将参数传递给CRYSTAL REPORT
- 经典ASP亚马逊s3休闲授权
- asp-classic – 经典的asp / asp.net网站 – global.asa无效
- asp.net-mvc – 无法加载指定的元数据资源
- asp.net – GridView分页 – 第一,最后,下一个,上一个
