编辑: 这是我演示的确切问题,请看一下,一旦我点击提交按钮,它就会回复并丢失其状态,正如您在示例代码中看到的,我有三页我发布了形成 1)EmployeeForm,2)EmployerForm,3)ContractorForm
https://dotnetfiddle.net/wVtwgW
如何保留该复选框?
一旦我发布页面并重新加载同一页面,如果我的数据模型无效并且它在屏幕上显示错误消息但问题是,它隐藏了fieldset
并且用户必须再次点击该复选框以显示fieldset
。
我的问题是:我怎样才能显示fieldset
并在其中显示错误消息?
//我的脚本显示了字段集
<script>
$(document).ready(function() {
$('#Employee').change(function() {
if (this.checked) {
$('#emp').show();
}
});
});
</script>
//它显示带有复选框的字段集:
<fieldset class="fieldset-auto-width">
<legend>
Select Employee
</legend>
<table width="auto">
<tr>
<th>
Employee
</th>
<td>
@Html.CheckBox("Employee")
</td>
</tr>
</table>
</fieldset>
//我的表单,我有所有输入文本和按钮等...
<fieldset id="emp" style="display: none" class="fieldset-auto-width">
<legend>
Employee Display
</legend>
@using (Html.BeginForm("EmployeeServer", "EmployeeForm", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div>..... </div>
}
</fieldset>
答案 0 :(得分:1)
只需使用JavaScript即可。从验证摘要帮助程序中查找呈现的元素,如果它存在,则可以显示您的员工表单。您可以将它添加到已执行的脚本中,如下所示:
$(document).ready(function() {
$('#Employee').change(function() {
if (this.checked) {
$('#emp').show();
}
});
//check for validation summary elements
if($('.validation-summary-errors').length > 0){
//and show previous entry if present
$('#emp').show();
}
});
答案 1 :(得分:1)
使用@ Html.CheckBoxFor()
而不是使用@ Html.CheckBox()<td>
@Html.CheckBoxFor(m => m.Employee)
</td>
当您返回模型状态错误时,这将保留复选框的状态..
在你的javascript中,只需在页面加载后调用$(“#Employee”)更改事件。
$(document).ready(function() {
$('#Employee').change(function() {
if (this.checked) {
$('#emp').show();
}
});
$('#Employee').trigger("change");
});
在渲染视图时设置Fieldset显示值
<fieldset id="emp" style="@(Model.Employee ? "": "display: none")" class="fieldset-auto-width">
<legend>
Employee Display
</legend>
@using (Html.BeginForm("EmployeeServer", "EmployeeForm", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div>..... </div>
}
</fieldset>
如果Model.Employee = false,这将隐藏字段集,如果Model.Employee = true,则显示它。