如何解决如何仅在用户单击提交表单时触发数据验证,而在ASP.NET MVC的文本框中更改值后才触发数据验证?
我有一个模型,里面有一些属性,例如CustomerName。
[required(ErrorMessage = "Customer Name is required")]
public string CustomerName{ get; set; }
在我的表单中,我声明文本框,如下所示:
@(Html.DevExtreme().TextBoxFor(m => m.CustomerName).ID("txtCustomerName"))
当我第一次加载页面时,将有数据加载到txtCustomerName中。此外,还有另一个按钮可以清除文本框的值。但是,一旦单击清除按钮,由于数据注释属性被声明为“ required”,则会立即显示错误消息“ Customer Name is required”。
我的问题是,如何以编程方式清除文本框值时避免触发验证?当然,当单击提交表单时,将触发验证,这是可以的。预先感谢。
解决方法
可能有一种更有效的方法(我自己对ASP-NET数据注释还很陌生),但这是我要解决的方法:
如果您不希望在删除字段值时显示验证器,请从模型中的CustomerName字符串中删除“必需”注释。
为CustomerName定义字段,如下所示:
<input id="txtCustomerName" onchange="$('#txtCustomerNameValidator').hide()" type="text" asp-for="CustomerName">
<!--Validation span,feel free to customise this with CSS as you wish -->
<span id="txtCustomerNameValidator" style="display: none;">Please Enter a Customer Name</span>
<!-- Make sure a button in your form is set up to call the JS method: -->
<button type="submit" onclick="OnCustomerFormSubmit('formId')">Submit Form</button>
asp-for
标签帮助器在引用页面模型中的变量/对象值并保持其值(如果有的话)时非常有用。
制作一个JS方法,该方法将在您为该字段提交表单时显示/隐藏一些验证,并在您单击提交按钮时触发:
function OnCustomerFormSubmit(formId) {
var customerNameField = $("#txtCustomerName");
var customerNameValidator = $("#txtCustomerNameValidator");
var isValid = true;
if (customerNameField.val() === null || customerNameField.val() === '') {
customerNameValidator.show();
isValid = false;
}
if (isValid) {
$('#' + formId).submit();
}
}
如果任何人有任何改进,他们都可以建议采用这种方法,那就太好了。哈哈哈哈。
我希望这对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。