我的AccountController中出现此错误。
类型或命名空间名称' SelectListItem'找不到(你错过了使用指令或汇编引用吗?
显而易见的解决方法是添加using System.Web.Mvc;
但是当我这样做时,我会收到4个新错误
在两个不同的界限上:
类型或命名空间名称' ErrorMessage'找不到(你错过了使用指令或汇编引用吗?)
另外两行:
'比较'是System.ComponentModel.DataAnnotations.CompareAttribute'之间的模糊参考。和' System.Web.Mvc.CompareAttribute'
为什么会发生这种情况,我该如何解决?
public class RegisterViewModel
{
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public IEnumerable<SelectListItem> DepotList { get; set; }
}
ResetPasswordViewModel
public class ResetPasswordViewModel
{
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
}
答案 0 :(得分:23)
是的。这两个名称空间都具有相同功能的属性。
根据msdn documentation,System.Web.Mvc.CompareAttribute
已过时,建议使用System.ComponentModel.DataAnnotations.CompareAttribute
因此要么使用包含命名空间的完全限定名称。
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[System.ComponentModel.DataAnnotations.Compare("Password",
ErrorMessage = "The password and confirmation password do not match.")]
public string Name { get; set; }
如果您不想在所有地方放置完全限定名称,也可以使用别名
using Compare = System.ComponentModel.DataAnnotations.CompareAttribute;
public class ResetPasswordViewModel
{
[DataType(DataType.Password)]
[Compare("Password", ErrorMessage = "The password and confirm password do not match.")]
public string Password { set;get;}
//Other properties as needed
}