提问人:petrov peter 提问时间:1/15/2019 最后编辑:petrov peter 更新时间:1/15/2019 访问量:1318
在客户端的 ASP.NET MVC 中验证字符串数组
Validate String Array In ASP.NET MVC in client side
问:
这是我的第一篇文章。
我需要如下所示的字符串数组验证。
[Required(ErrorMessage = "Content name is required")]
public string[] ContentName { get; set; }
我找到了一个有同样情况的帖子。
这个答案和以下代码对我帮助很大,我可以解决我的问题。
public class StringArrayRequiredAttribute : ValidationAttribute
{
protected override ValidationResult IsValid (object value, ValidationContext validationContext)
{
string[] array = value as string[];
if(array == null || array.Any(item => string.IsNullOrEmpty(item)))
{
return new ValidationResult(this.ErrorMessage);
}
else
{
return ValidationResult.Success;
}
}
}
和
[StringArrayRequired(ErrorMessage = "Content name is required")]
public string[] ContentName { get; set; }
但现在我发现了另一个问题。此验证仅适用于服务器端。我希望我也能得到客户验证。因为这会让我的客户更快乐!
那么你能给我一个很好的方法吗?等待您的答案!!
谢谢你的帮助。 我在我的视图中写了一个简短的代码。
$.validator.addMethod('stringarrayrequired', function (value, element, params) {
let array = value;
if (array == null) {
return false;
}
for (var i = 0; i < array.length; i++) {
if (!array[i]) {
return false;
}
}
return true;
}, '');
$.validator.unobtrusive.adapters.add("stringarrayrequired", function (options) {
options.rules["stringarrayrequired"] = "#" + options.element.name.replace('.', '_'); // mvc html helpers
options.messages["stringarrayrequired"] = options.message;
});
(对不起,我的JS不流利...... 我将 id=“stringarrayrequired” 添加到我的 .但这行不通。 我还检查了html代码。当我单击提交按钮时,“ContentName”的输入标签中应该有一个 class=“input-validation-error” 或 “valid”,但我找不到它们。
我仍然需要更多信息...有人帮忙吗?
我找到了解决我问题的方法。
(我将属性名称 ContextName 更改为 Selection)
[Display(Name = "Selections")]
public Selection[] Selections { get; set; }
public class Selection
{
[Required(ErrorMessage = "SelectionItem is empty")]
public string SelectionItem { get; set; }
}
我使用 Selections for 、SelectionItem for 和 。
如您所知,[Required] 属性不适用于 string[]。因此,我创建了一个 Selection 类并将 string[] 更改为 Selection[],并将 [Required] 属性应用于字符串。
我知道这不是一个干净的方法......我会使用万无一失的东西。
答:
0赞
TanvirArjel
1/15/2019
#1
在视图中添加以下代码:javaScript
$.validator.addMethod('stringarrayrequired', function (value, element, params) {
// here return true or false based on checking the input value
},'');
$.validator.unobtrusive.adapters.add("stringarrayrequired", function (options) {
options.rules["stringarrayrequired"] = "#" + options.element.name.replace('.', '_'); // mvc html helpers
options.messages["stringarrayrequired"] = options.message;
});
评论
0赞
petrov peter
1/15/2019
感谢您的快速回复!!我将尝试此代码并检查它是如何工作的。
0赞
petrov peter
1/15/2019
它没有...也许我添加的代码中有一些错误。我在上面的问题帖子中描述了我写的内容。
0赞
TanvirArjel
1/15/2019
你能通过团队查看器分享你的屏幕吗?
0赞
petrov peter
1/15/2019
哦!我发现了一种有点肮脏的方法来仅使用内置的 reqiured 属性来解决我的问题!!等我下班回来后再和你分享:)
评论