【问题标题】:Multiple views same model[MVC 3]多个视图相同的模型[MVC 3]
【发布时间】:2013-07-02 16:06:49
【问题描述】:

我有一个模型和一个控制器用于多个视图。 该模型有一些必填字段,但对于特定视图,我需要忽略对 2 个特定字段的验证。 有什么方法可以忽略这两个字段的验证?

我正在使用 asp.net MVC3。

型号代码示例:

[Required(ErrorMessage = "Campul strada este obligatoriu")]
    public string Strada { get; set; }

[DisplayName("Numar strada")]
[Required(ErrorMessage = "Campul strada numar este obligatoriu")]
public string NrStrada { get; set; }

对于 9/10 的观看次数还可以,但对于 1 次观看,我不想被要求。

【问题讨论】:

  • 请更具体!您正在使用哪种编程语言、哪些框架/库?考虑提供一些示例代码。人们只能按照你的要求帮助你。
  • 您应该考虑改用 ViewModel。发布一些代码,以便我们可以看到您在做什么。
  • 对于那个视图,而不是使用 Html.EditorFor/Html.TextBoxFor,您可以尝试使用 Html.TextBox 帮助器,我认为不会输出 html 验证所需的标签,所以你应该通过客户端验证。服务器端,您需要检查模型状态并删除这两个字段的错误

标签: asp.net-mvc-3


【解决方案1】:

当出现此类问题时,我通常会创建不同的视图模型。每个都有自己的验证逻辑。这样做没有错。

这里是示例,与您的代码无关,您可以相应地调整您的代码。

例如,对于创建客户,我将有一个创建客户视图模型,而对于编辑客户,我将有一个编辑客户视图模型。每个都有不同的验证集。创建客户只需要名字和姓氏。编辑客户需要更新客户记录的名字、姓氏和员工编号。添加新客户时不需要员工编号更新程序。

这是一个可能的创建客户视图模型:

public class CreateCustomerViewModel
{
     [Required(ErrorMessage = "Required")]
     public string FirstName { get; set; }

     [Required(ErrorMessage = "Required")]
     public string LastName { get; set; }
}

这是一个可能的编辑客户视图模型:

public class EditCustomerViewModel
{
     [Required(ErrorMessage = "Required")]
     public string FirstName { get; set; }

     [Required(ErrorMessage = "Required")]
     public string LastName { get; set; }

     [Required(ErrorMessage = "Required")]
     public string UpdatedByEmployeeNumber { get; set; }
}

这只是一个基本的例子。

【讨论】:

  • 在实现不显眼的客户端验证时,我们可以忽略其中的一些
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多