微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何仅在用户单击提交表单时触发数据验证,而在ASP.NET MVC的文本框中更改值后才触发数据验证?

如何解决如何仅在用户单击提交表单时触发数据验证,而在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 举报,一经查实,本站将立刻删除。