* .cshtml网页发送复选框状态(选中与否)通过隐藏字段
@{
var companyLoginFormViewModel = TempData["CompanyLoginFormViewModel"] as CompanyLoginFormViewModel;
}
<form class="login-form" action="@Url.Action("Login")" name="companyLoginForm" method="post">
<input type="hidden" name="rememberMe" value="@companyLoginFormViewModel.LoginViewModel.RememberMe" />
<button type="submit" class="btn btn-success uppercase">@L("LogIn")</button>
</form>
注:此值(@companyLoginFormViewModel.LoginViewModel.RememberMe
)总是true
或false
虚拟机
public class CompanyLoginFormViewModel
{
public LoginViewModel LoginViewModel { get; set; }
}
public class LoginViewModel
{
public bool RememberMe { get; set; }
}
操作方法:
[HttpPost]
public virtual async Task<JsonResult> Login(LoginViewModel loginModel)
{
if (!ModelState.IsValid) //here it shows validation error
{
throw new UserFriendlyException(L("FormIsNotValidMessage"));
}
}
问:当我通过true
或false
通过隐伏场,它总是说The RememberMe field is required.
验证错误的服务器上side.But该属性是not a required
场?你能告诉我为什么会发生这种情况吗?谢谢。
为什么你不使用强类型助手来生成你的看法。为什么你使用'ViewData'而不是将模型传递给视图(并且使用'@model CompanyLoginFormViewModel'?'bool'类型是必需的字段 - 它必须是'true'或'false'并且永远不会是'null'。唯一的解释是该值不是真的假。检查你生成的html(虽然这将通过生成你正确地查看正确的方式解决) –
并测试 - 只是注释掉隐藏输入 –
@StephenMuecke是的,它产生像这样的'。那么这个平均值是'null'吗?但是模型的上面的属性是'false'no.So怎么能 – Sampath