Jquery 如何删除razor页面中的验证?
我有下面这把剃刀的形状Jquery 如何删除razor页面中的验证?,jquery,asp.net-mvc-4,Jquery,Asp.net Mvc 4,我有下面这把剃刀的形状 @using (Ajax.BeginForm(new AjaxOptions { })) { <div id="frm" style="visibility:hidden"> <table> <thead> <tr> <td></td> <td></td> <t
@using (Ajax.BeginForm(new AjaxOptions { }))
{
<div id="frm" style="visibility:hidden">
<table>
<thead>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</thead>
<tbody>
<tr>
<td>@Html.LabelFor(x => x.emp.FirstName, new { @class = "form-control" })</td>
<td>@Html.TextBoxFor(x => x.emp.FirstName, new { @class = "form-control" })</td>
<td>@Html.ValidationMessageFor(x => x.emp.FirstName)</td>
</tr>
<tr>
<td>@Html.LabelFor(x => x.emp.LastName, new { @class = "form-control" })</td>
<td>@Html.TextBoxFor(x => x.emp.LastName, new { @class = "form-control" })</td>
<td>@Html.ValidationMessageFor(x => x.emp.LastName)</td>
</tr>
<tr>
<td></td>
<td></td>
<td>
<input type="submit" value="Save" class="btn btn-success" id="save"/>
<input type="submit" value="close" class="btn btn-success" id="close"/>
</td>
</tr>
</tbody>
</table>
</div>
}
这是模型类EmployeeModel
public class EmployeeModel
{
public int EmpID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
虚拟机
公共类EmployeeVM
{
公共字符串DepartmentID{get;set;}
公共列表部门coll{get;set;}
公共雇员模型emp{get;set;}
公共雇员VM()
{
emp=新员工模型();
}
}
首先,我建议将表单中包含的div设置为display:none
,而不是visibility:hidden
(请参阅区别)
注意您的$('#new').load()
脚本也应该被删除(不清楚您认为这是在做什么)
接下来,出于与上述相同的原因,“关闭”按钮也应该是正常按钮
<button type="button" class="btn btn-success" id="close">Close</button>
旁注:建议
标记中的第一行为var form=$(“#frm”)
,然后可以将$('#frm')
的所有实例替换为form
(它缓存元素,因此效率更高)。事实上,您确实不需要
元素,因为您可以只显示/隐藏
元素本身
注意:您还可以使用“关闭”按钮的重置按钮-
Close
并删除$(“#frm”).get(0.reset()代码>代码行。请检查@ParthTrivedi我已经试过了,但它不起作用!当窗体加载并单击“保存”时,将检查验证并显示错误,但当我在加载后单击“关闭”时,窗体甚至不会关闭。一个选项是重新分析验证程序()。但是您的关闭按钮不应该是将触发验证的
。改为使用
请更改type=“button”
而不是type=“submit”
您可以向提交按钮添加一个css类的取消来清除或重置验证<代码>
感谢您花时间回答问题,但问题仍然存在。这里的视频显示,您还将“保存”按钮更改为普通按钮-该按钮需要是提交按钮(根据您的原始代码)。还有一个潜在问题,因为表单是隐藏的,具体取决于验证程序的配置方式。您是否可以暂时从div中删除style=“display:none”
,以便在首次呈现视图进行测试时显示该视图?我也这样做了,现在表单在页面加载时显示,但按钮仍然不起作用,只是意识到我取消了。empty()
删除包含错误文本的内部错误span
元素(请参见编辑)。有关工作示例,请参阅。注意$('#frm').get(0.reset()
工作正常,但作为替代方案,删除该行并使按钮关闭
,其功能相同。另外,实际上不需要
元素-您只需显示/隐藏
元素本身。
public class EmployeeVM
{
public string DepartmentID { get; set; }
public List<SelectListItem> DepartmentColl { get; set; }
public EmployeeModel emp { get; set; }
public EmployeeVM()
{
emp = new EmployeeModel();
}
}
<div id="frm" style="display:none">
<button type="button" id="new">New Entry</button>
$('#new').click(function () {
$('#frm').show();
});
<button type="button" class="btn btn-success" id="close">Close</button>
$('#close').click(function () {
//Reset error messages
$('.field-validation-error').empty().removeClass('field-validation-error').addClass('field-validation-valid');
//Reset form controls
$('#frm').get(0).reset();
$('.input-validation-error').removeClass('input-validation-error').addClass('valid');
// Reset lazy validation
$('#frm').data('validator', null);
$.validator.unobtrusive.parse($('#frm'))
// Hide the form
$('#frm').hide();
});