C# 我可以跳过asp mvc 5(C)中要由ModelState.IsValid()验证的属性/字段吗?或者为隐藏字段指定一个值?

C# 我可以跳过asp mvc 5(C)中要由ModelState.IsValid()验证的属性/字段吗?或者为隐藏字段指定一个值?,c#,asp.net-mvc-5,entity-framework-6,C#,Asp.net Mvc 5,Entity Framework 6,我正在创建一个基于ASP.NETMVC5C的web应用程序,并且一直在进行特定类型的验证。基本上,我有5个模型,其中的对象包含在视图模型中。这五个模型中的一个作为列表包含在视图模型中。因为这些模型之间有关系,所以实现了外键,我根据需要注释了外键,因为它们必须在那里 情景 模型类: 客户端-应用程序中的客户端 AddressOf-物业和客户的地址 ClientPhone-客户端的电话-具有客户端的外键 ClientEmail-客户端的电子邮件-具有客户端的外键 顾问-在管理系统中处理客户的顾问 现

我正在创建一个基于ASP.NETMVC5C的web应用程序,并且一直在进行特定类型的验证。基本上,我有5个模型,其中的对象包含在视图模型中。这五个模型中的一个作为列表包含在视图模型中。因为这些模型之间有关系,所以实现了外键,我根据需要注释了外键,因为它们必须在那里

情景 模型类: 客户端-应用程序中的客户端 AddressOf-物业和客户的地址 ClientPhone-客户端的电话-具有客户端的外键 ClientEmail-客户端的电子邮件-具有客户端的外键 顾问-在管理系统中处理客户的顾问

现在,我在View.cshtml中为客户机对象、地址对象、ClientPhone、ClientMail和顾问下拉列表提供了字段。不包括ClientPhone.ClientCNIC和clientmail.ClientCNIC的字段,它们是外键,当我在客户机表中输入数据时,将在控制器中输入。ClientCNIC在View.cshtml中确实有字段,但它来自客户机表。由于ClientPhone和ClientEmail中的ClientCNIC字段外键具有注释[Required],因此显示验证错误

我想要的是,将为Client.ClientCNIC创建的字段的值分配给属性ClientPhone.ClientCNIC和clientmail.ClientCNIC

提前谢谢

控制器

ClientPhone-模型类-与ClientMail结构相同

namespace ITCMS4
{
    using System;
    using System.Collections.Generic;

    [Table("ClientPhones")]
    public partial class ClientPhone
    {
        [Key] public int ClientPhoneId { get; set; }
        [Required] public string Phone { get; set; }
        [Required] public bool PrimaryPhone { get; set; }
        [Display(Name = "Client"), ForeignKey("Client")] public string ClientCNIC { get; set; }
        public virtual Client Client { get; set; }
    }
}

一种方法是从“违规”属性中删除[Required]属性,同时确保在需要时为它们指定正确的值。ViewModel并不总是必须通过数据注释属性强制或模拟所有数据模型规则,这就是一个很好的例子


另一种方法是保留ClientFormViewModel类的属性和,然后使其应用您的“将其也分配给该”规则。

谢谢您的回答。ViewModel并不总是必须通过数据注释属性强制或模拟所有数据模型规则,这就是一个很好的例子。由此可知,如果您假设我已注释了ViewModel,则情况并非如此。我已经注释了相应的类,以反映数据库中的NOTNULL。第一个解决方案已经作为一个解决方案应用。然而,我个人不喜欢变通办法,而不是学习如何解决它。我正在研究你建议的第二个解决方案
namespace ITCMS4
{
    using System;
    using System.Collections.Generic;

    [Table("ClientPhones")]
    public partial class ClientPhone
    {
        [Key] public int ClientPhoneId { get; set; }
        [Required] public string Phone { get; set; }
        [Required] public bool PrimaryPhone { get; set; }
        [Display(Name = "Client"), ForeignKey("Client")] public string ClientCNIC { get; set; }
        public virtual Client Client { get; set; }
    }
}