C# 如何使用MVC compare attribute only插入表单
我为数据库用户表创建了一个模型类。我的数据库表没有confirmPassword字段。但我的班级有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]
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”),但它不起作用。这是真的吗。。。我错过了什么?谢谢