Asp.net mvc 为什么ASP.NET MVC4中的复选框总是给出false值?

Asp.net mvc 为什么ASP.NET MVC4中的复选框总是给出false值?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我直接用HTML编写了以下代码: <label for="RememberMe"> <input type="checkbox" name="RememberMe" id="RememberMe" value="true" /> <span>Remember me?</span> <input name="RememberMe" type="hidden" value="false"> </label>

我直接用HTML编写了以下代码:

<label for="RememberMe">
    <input type="checkbox" name="RememberMe" id="RememberMe" value="true" />
    <span>Remember me?</span>
    <input name="RememberMe" type="hidden" value="false">
</label>
viewmodel与MVC示例中使用的相同

以下是我正在使用的CSS:

label {
    display:block;
}

input[type="radio"],
input[type="checkbox"] {
  display:none;
}

input[type="radio"] + span:before,
input[type="checkbox"] + span:before {
  font-family: 'FontAwesome';
  padding-right: 3px;
}

input[type="radio"] + span:before {
  content: "\f10c"; 
}

input[type="radio"]:checked + span:before {
  content: "\f111";
}

input[type="checkbox"] + span:before {
  content: "\f096";
}

input[type="checkbox"]:checked + span:before {
  content: "\f046";
}
以下是完整的代码:

  <form action="/Account/Login" id="login-form" class="form" method="post">
        @Html.AntiForgeryToken()

        <div id="input-fields">
            <div>
                @Html.TextBoxFor(m => m.UserName, new
                                    {
                                        id = "user-name",
                                        placeholder = "Username (or guest)",
                                        required = "required ",
                                        @size = "25"
                                    })
            </div>
            <div>
                @Html.PasswordFor(m => m.Password, new
                                    {
                                        placeholder = "Password (or guest)",
                                        required = "required ",
                                        @size = "25"
                                    })
            </div>

            <label for="RememberMe">
                <input type="checkbox" name="RememberMe" id="RememberMe" value="true" />
                <span>Remember me?</span>
                <input name="RememberMe" type="hidden" value="false">
            </label>



        </div>
        <button class="medium default" id="login" type="submit">Login</button>
        <button class="medium" id="register" type="button" onclick="location.href='/Account/Register'">Register</button>
    </form>

@Html.AntiForgeryToken()
@Html.TextBoxFor(m=>m.UserName,新
{
id=“用户名”,
占位符=“用户名(或来宾)”,
required=“required”,
@size=“25”
})
@Html.PasswordFor(m=>m.Password,新
{
占位符=“密码(或来宾)”,
required=“required”,
@size=“25”
})
还记得我吗?
登录
登记
还有一个javascript:

<script type="text/javascript">
        (function () {
            document.getElementsByClassName('form')[0]
                .addEventListener("submit", function (ev) {
                    document.getElementById("login").disabled = true;
                    document.getElementById("register").disabled = true;
                    document.getElementById("RememberMe").disabled = true;
                    document.getElementById('message').innerHTML = ev.target.getAttribute('id') == "register-form" ? "System: Registering " : "System: Authenticating ";
                    setInterval(function () {
                        document.getElementById('message').innerHTML += '. ';
                    }, 3000);
                }, false);
        })();
    </script>
document.getElementById("RememberMe").disabled = true;

(功能(){
document.getElementsByClassName('form')[0]
.addEventListener(“提交”,功能(ev){
document.getElementById(“login”).disabled=true;
document.getElementById(“寄存器”).disabled=true;
document.getElementById(“RememberMe”).disabled=true;
document.getElementById('message').innerHTML=ev.target.getAttribute('id')==“注册表单”?“系统:注册”:“系统:验证”;
setInterval(函数(){
document.getElementById('message').innerHTML+=';
}, 3000);
},假);
})();

表单提交时,您似乎正在禁用复选框。这可能会阻止传递复选框值,使其默认为隐藏字段值

尝试从javascript中删除此行:

<script type="text/javascript">
        (function () {
            document.getElementsByClassName('form')[0]
                .addEventListener("submit", function (ev) {
                    document.getElementById("login").disabled = true;
                    document.getElementById("register").disabled = true;
                    document.getElementById("RememberMe").disabled = true;
                    document.getElementById('message').innerHTML = ev.target.getAttribute('id') == "register-form" ? "System: Registering " : "System: Authenticating ";
                    setInterval(function () {
                        document.getElementById('message').innerHTML += '. ';
                    }, 3000);
                }, false);
        })();
    </script>
document.getElementById("RememberMe").disabled = true;

您能否显示相关代码,即控制器?CSS似乎不太相关。您如何获取值?我使用的是标准ASP.NET MVC示例代码。我将发布视图模型的详细信息。然而,我所做的是用fiddler进行检查,在所有情况下我都会看到:类似这样的东西:uuu RequestVerificationToken=FY0uW5XRcoE6GC\u pdu\u 2sngpeloxnd8tq1doipekk1yfvbw2gusmimesvwmw\u wzAt2xQt0\u misscgibv-2mQcj1oZ-cscv-NNAt0v4TZ41&UserName=abcdedddddd&Password=dddddddddddd&RememberMe=false