为什么要记住我是必需的

时间:2017-12-17 02:28:52

标签: asp.net-mvc entity-framework modelstate

使用ASP.NET MVC登录页面。我正在使用DevExtreme小部件。 当我输入用户名/密码并单击“登录”按钮时,控件将转到“登录”操作,我看到<!DOCTYPE html> <html> <head> <title>Test</title> </head> <body bgcolor='black'> <canvas id="myCanvas" oncl></canvas> <p id="demo" style="color: white" oncl></p> </body> </html>ModelState.IsValid

原因是,ModelState显示错误:

  

记得我吗?字段是必需的。

我检查了我的ViewModel,我发现它没有按要求标记该字段。奇怪的是,当我第二次单击“登录”按钮时,它工作正常,ModelState.IsValid为true !!

这是我的ViewMode

false

问题是,为什么需要它以及为什么它在第二次点击时起作用。

这是我视图中的代码

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email")]
    [EmailAddress]
    public string Email { get; set; }

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

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

这是html源代码中的代码

@Html.DevExtreme().CheckBoxFor(m => m.RememberMe).Text(Html.DisplayNameFor(m => m.RememberMe).ToString())

1 个答案:

答案 0 :(得分:1)

始终需要null属性(除非bool?,否则不能.Value()

除非您专门设置DevExtreme CheckBoxFor()方法的value="null" in the hidden input that is generated by the plugin属性,否则会使用null对其进行初始化。如果您没有点击该复选框,则会发布ModelState并导致LoginViewModel生效。

假设您将@Html.DevExtreme().CheckBoxFor(m => m.RememberMe) .Value(Model.RememberMe) .Text(Html.DisplayNameFor(m => m.RememberMe).ToString()) 的实例传递给GET方法中的视图,那么您可以使用

设置默认值
StreamsConfig.PARTITION_GROUPER_CLASS_CONFIG