Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MVC compare attribute only插入表单_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 如何使用MVC compare attribute only插入表单

C# 如何使用MVC compare attribute only插入表单,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我为数据库用户表创建了一个模型类。我的数据库表没有confirmPassword字段。但我的班级有 public class User { [Key] public int id { get; set; } [Required] public string password{ get; set; } [Compare("password", ErrorMessage = "Re-Type password!")] [NotMapped]

我为数据库用户表创建了一个模型类。我的数据库表没有confirmPassword字段。但我的班级有

public class User
{
    [Key]
    public int id { get; set; }

    [Required]
    public string password{ get; set; }

    [Compare("password", ErrorMessage = "Re-Type password!")]
    [NotMapped]
    public string confirmPassword { get; set; }
}
我的插入表单在html razor中有confirmPassword文本框用于比较,因为我需要它

      <div class="form-group">
         @Html.LabelFor(m => m.confirmPassword , new { @class = "control-label" })
            @Html.TextBoxFor(m => m.confirmPassword , new { @class = "form-control"})
            <h5 class="text-danger">@Html.ValidationMessageFor(m=> m.confirmPassword )</h5>
        </div>

@LabelFor(m=>m.confirmPassword,新的{@class=“control label”})
@TextBoxFor(m=>m.confirmPassword,新的{@class=“form control”})
@Html.ValidationMessageFor(m=>m.confirmPassword)
但是我的更新表单没有html格式的confirmPassword文本框。因此,当我发布更新表单时,ModelState.IsValid始终为false。如何使用仅比较文本字段插入表单?因为我不需要在更新表单中使用confirmPassword字段


多谢各位

如果你有一个不同的表单,实际上需要一个不同的
ViewModel
(不同的数据验证要求、必填字段等),然后可以为该视图创建不同的视图模型类


例如,创建一个名为UserUpdate的类(不包括confirm password字段),并根据需要将其映射到您的域实体。

如果您有一个不同的表单,实际上需要不同的
ViewModel
(不同的数据验证要求、必填字段等),然后可以为该视图创建不同的视图模型类


例如,创建一个名为UserUpdate的类(不包括确认密码字段),并根据需要将其映射到域实体。

您应该使用不同的
视图模型进行插入和更新操作。这样,您就可以在post操作时拥有(并验证)自己的插入/更新属性


或者,您可以使用
ModelState.remove(“confirmPassword”)(在更新后操作中),然后检查
ModelState.IsValid
,这样就不会触发对该属性的验证。

对于插入和更新操作,您应该使用不同的
ViewModels
。这样,您就可以在post操作时拥有(并验证)自己的插入/更新属性


或者,您可以使用
ModelState.remove(“confirmPassword”)(在更新后操作中),然后检查
ModelState.IsValid
,这样就不会触发对该属性的验证。

对于一个字段ModelState.Remove(“confirmPassword”);这对我来说很简单,谢谢你的回答。嗨,我也有同样的问题,但我不要求密码。我添加ModelState.Remove(“密码”);和ModelState.Remove(“ConfirmPassword”),但它不起作用。这是真的吗。。。我错过了什么?感谢一个字段ModelState.Remove(“confirmPassword”);这对我来说很简单,谢谢你的回答。嗨,我也有同样的问题,但我不要求密码。我添加ModelState.Remove(“密码”);和ModelState.Remove(“ConfirmPassword”),但它不起作用。这是真的吗。。。我错过了什么?谢谢