排除模型的密码字段,但不会导致模型验证失败

时间:2017-10-11 18:11:13

标签: c# entity-framework asp.net-core

我正在使用EntityFramework和.NET Core中的MVC,遇到了一个我不确定如何处理的问题。我有一个带有undefined字段的用户模型。我希望编辑用户模型,但我不希望Password字段显示在与其他用户字段相同的编辑视图中。隐藏密码很简单,但现在模型在保存编辑时总是无法验证。

我只是在视图中隐藏了密码字段,但是在页面源上显示了密码。我还尝试创建Password模型,但这会创建大量的翻译代码,而这些代码对我想要达到的目标来说并不是必需的。

非常感谢任何帮助。以下是我一直在使用的代码。

型号: User.cs

UserEditView

编辑操作: UsersController.cs

public class User
{
    [Display(Name="User ID")]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    [Required()]
    [Display(Name="Email Address")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Required()]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password { get; set; }

    [Required()]
    public string Salt { get; set; }
}

1 个答案:

答案 0 :(得分:0)

在您的控制器中,您可以执行以下操作:

ModelState.Remove("Password");

将阻止该字段被验证。

然而,这不是一个非常干净的解决方案。如果您未在当前视图中使用该字段,则应考虑将该字段移动到另一个模型。