loginviewmodel.cs中的用户名验证

时间:2016-06-23 09:20:25

标签: asp.net-mvc

尝试在我正在处理的项目中导航到浏览器中的登录视图时出现此错误。 enter image description here

我的AccountViewModel

中有一个用户名属性
 public class LoginViewModel
{
    [Required(ErrorMessageResourceName = "UserNameRequired")]
    [Display(Name = "UserName")]
    public string UserName { get; set; }

    [Required(ErrorMessageResourceName = "PasswordRequired")]
    [Display(Name = "Password")]
    [DataType(DataType.Password)]

    public string Password { get; set; }

    [Display(Name = "RememberMe")]
    public bool RememberMe { get; set; }
}

我该如何避免这个问题?有谁能建议我解决方案?

我改变了像这样的必需属性

        [Required(ErrorMessageResourceType = typeof(InitialCreate1),ErrorMessageResourceName = "UserNameInvalid", ErrorMessage = null)]
    [Display(Name = "UserName")]
    public string UserName { get; set; }

我收到了这个新错误

Server Error in '/' Application.

必须设置ErrorMessageString或ErrorMessageResourceName,但不能同时设置。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:必须设置ErrorMessageString或ErrorMessageResourceName,但不能同时设置。

来源错误:

第17行:@ Html.LabelFor(m => m.UserName,new {@class =" col-md-2 control-label"}) 第18行: 第19行:@ Html.TextBoxFor(m => m.UserName,new {@class =" form-control"}) 第20行:@ Html.ValidationMessageFor(m => m.UserName) 第21行:

我该怎么办?请帮帮我?

1 个答案:

答案 0 :(得分:2)

第一条错误消息是除资源名称外还需要提供资源类型。例如,如果您有一个名为Validation.resx的资源,那么您需要在属性上声明资源类型。

[Required(
    ErrorMessageResourceName = "UserNameRequired",
    ErrorMessageResourceType = typeof(Validation))]
[Display(Name = "UserName")]
public string UserName { get; set; }

资源文件可能如下所示:

enter image description here

第二条错误消息是您必须声明ErrorMessageErrorMessageResourceName,但不能同时声明两者。要修复错误,您需要从属性声明中删除ErrorMessage = null

如果实际上您没有资源文件,那么您可能会发现直接在属性上声明错误消息更容易。

[Display(Name = "UserName")]
[Required(ErrorMessage = "Please enter your username.")]
public string UserName { get; set; }