Pun*_*ter 5 validation jquery client attributes asp.net-core
我无法让客户端验证在ASP.NET Core MVC中工作。我从这里Google搜索并应用了示例(http://www.discuzfeed.com/code/lotooslo-mvc-6-client-side-validation-for-custom-attribute.html),但是没有运气。
这是我的代码
属性
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
public sealed class CannotBeRedAttribute : ValidationAttribute, IClientModelValidator
{
public override bool IsValid(object value)
{
var message = value as string;
return false;
//return message?.ToLower() == "red";
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(
ClientModelValidationContext context)
{
yield return new ModelClientValidationRule(
"cannotbered",
FormatErrorMessage(ErrorMessage));
}
}
Run Code Online (Sandbox Code Playgroud)
查看模型
[CannotBeRed(ErrorMessage = "Not red!")]
public string SelectedCompanyIds { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图
<input type="hidden" name="test" class="form-control" id="selectCompanyIdControl" data-bind="value: SelectedReportCompanyIds" asp- for="SelectedCompanyIds" />
@<script type="text/javascript">
require(['jquery', 'knockout-es5', 'jquery-validation', 'jquery-validation-unobtrusive', 'pubsubjs', 'ReportEditViewModel'], function(jquery, knockout, jQueryVal, jQueryValUnobtrusive, pubsub, vm) {
jquery(document).ready(function () {
jquery.validator.addMethod("cannotbered",
function (value, element, parameters) {
alert("READ");
return value.toLowerCase() !== "red";
});
jquery.validator.unobtrusive.adapters.add('cannotbered', [], function (options) {
alert("ADAPATER");
options.rules.cannotbered = {};
options.messages['cannotbered'] = options.message;
});
Run Code Online (Sandbox Code Playgroud)
忽略括号在视图中未正确关闭的事实,还有其他与剔除相关的JS部件,此处没有复制不相关。
该GetClientValidationRules方法已被命中,但JS中的警报未找到。仅作为参考,在chrome或IE中运行开发人员工具时,我可以看到已加载了jquery验证和不干扰的库,并且没有控制台错误。验证标签在输入框上似乎没问题。...
<input type="hidden" name="test" class="form-control" id="selectCompanyIdControl" data-bind="value: SelectedReportCompanyIds" data-val="true" data-val-cannotbered="Not red!" value="" />
Run Code Online (Sandbox Code Playgroud)
所以我想我只是想走了一步,但不知道可能会是什么。有指针吗?
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |