2017-12-17 23 views
1

ASP.NET MVC 로그인 페이지 작업. DevExtreme 위젯을 사용하고 있습니다. 나는 사용자 이름/암호를 입력하고 로그인 버튼을 클릭하면 는, 제어 조치를 로그인 간다 나는, ModelState.IsValidfalse입니다 볼나를 기억하는 이유는 무엇입니까?

이유는, ModelState 보여줍니다 오류 :

The Remember me? field is required.

내 뷰 모델 및 I를 확인 필요에 따라 필드에 태그를 지정하지 않았는지 확인하십시오. 이상한 것은 두 번째로 Login 버튼을 클릭하면 작동하고 ModelState.IsValid는 true입니다 !! 이 두 번째 클릭에서 작동하는 이유

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; } 
} 

질문, 왜이 필요 내 뷰 모드입니다.

는 (그것의 bool? 않는 null 될 수 없음)이 html로 소스 A bool 속성은 항상 필요

<div id="devextreme2"></div> 
<script> 
    jQuery(function($){ 
     $("#devextreme2").dxCheckBox({ 
      "name": "RememberMe", 
      "value": null, 
      "text":"Remember me?", 
      "inputAttr": {"id":"RememberMe"} 
     }); 
    }); 
</script> 
+0

유일한 이유를 사용하여 기본 값을 설정할 수 있습니다' name = "RememberMe"'그러나 그 값을'null' (또는'true' 또는'false'와 다른 값)로 설정했습니다 - 그리고'bool'은 항상 필요합니다 ('null' 일 수 없습니다) –

+0

당신은 맞아, 확인란은 null로 initilzied입니다, 나는 내 ViewMode에 constructore를 추가하고 false로 필드를 초기화하지만, 여전히 HTML에서 초기 값이 null임을 알 수 있습니다. 그것이 문제이다. 힌트를 주셔서 감사합니다 – FLICKER

+0

나는 심령이 아니에요 :) - 코드를 보여주십시오. –

답변

1

의 코드 내보기

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

의 코드입니다.

DevExtreme CheckBoxFor() 메서드의 .Value() 속성을 특별히 설정하지 않는 한 value="null" in the hidden input that is generated by the plugin으로 초기화됩니다. 확인란을 클릭하지 않으면 null이 게시되어 ModelState이 유효합니다. 당신은 GET 방식의보기로 LoginViewModel의 인스턴스를 전달하는 가정

는, 당신은 당신이 당신의 형태로 입력이되어 발생 될 수

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