首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验证和修改MetaData类中的变量

验证和修改MetaData类中的变量
EN

Stack Overflow用户
提问于 2012-10-24 11:42:32
回答 1查看 123关注 0票数 0

我在一个项目中使用ASP.NET MVC 3

问题是,我想将一个值保存到数据库中,在保存到数据库之前,应该“清除”(比如删除尾随和结束空间,并进行验证)。

在使用数据注释将模型保存到数据库之前,我使用MetaData类来验证模型,使用以下代码进行验证:

代码语言:javascript
复制
if (ModelState.IsValid) {

我的MetaData类如下所示:

代码语言:javascript
复制
public class OrganizationMD {
    [Required(ErrorMessage = "*This field is required.")]
    [CustomValidationRule(ErrorMessage = "*Another error message")]
    public string OrganizationNumber;
}

我的第一个想法是给OrganizationNumber字符串一个getter和setter,然后让值变得“固定”。

例如,如果有人试图用"19860415-4785“作为组织编号来保存公司,那么在验证并将新值保存到数据库之前,它应该自动删除字符串中的尾随"19”和破折号。

我不能给这个模型一个getter和setter,因为我们正在使用模型-首先,,否则我认为这应该是可行的.

有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 13:04:08

您可以创建一个视图模型来将数据传递给/来自视图和控制器,而不是直接使用域(实体框架)模型。

将数据注释放在视图模型的属性上。

代码语言:javascript
复制
public class OrganizationMDViewModel
{
    [Required(ErrorMessage = "*This field is required.")]
    [CustomValidationRule(ErrorMessage = "*Another error message")]
    public string OrganizationNumber {get; set;}
}

然后,在映射回域模型以进行持久化之前,您可以在getter和setter中做任何您认为可以工作的事情。

为了便于阅读和调试,您可以在控制器中进行“清理”,而不是在getter和setter中,但这取决于您。

代码语言:javascript
复制
[HttpPost]
public ActionResult SaveData (OrganizationMDViewModel viewModel)
{
  if (ModelState.IsValid) {
    viewModel.OrganizationNumber...//clean up the value here
    OrganizationMD = new OrganizationMD{OrganizationNumber = viewModel.OrganizationNumber}
    //...and save
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13048536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档