- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
问题:我正在尝试手动验证某些 C# 对象,而验证器忽略了与字符串长度相关的验证。
测试用例:扩展this example它使用 [Required] 属性,我还想验证字符串是否不太长,如下所示。
public class Recipe
{
//[Required]
public string Name { get; set; }
[MaxLength(1)] public string difficulty = "a_string_that_is_too_long";
}
public static void Main(string[] args)
{
var recipe = new Recipe();
var context = new ValidationContext(recipe, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(recipe, context, results);
if (!isValid)
{
foreach (var validationResult in results)
{
Console.WriteLine(validationResult.ErrorMessage);
}
} else {
Console.WriteLine("is valid");
}
}
预期结果:错误:“难度太长。”
实际结果:'有效'
其他测试内容:
最佳答案
您需要进行 2 处更改才能使验证按您期望的方式进行:
<强>1。您必须将 difficulty
字段更改为属性。
Validator
类仅验证属性,因此将difficulty
定义更改为如下属性:
[MaxLength(1)] public string difficulty { get; set; } = "a_string_that_is_too_long";
<强>2。为 Validator.TryValidateObject
调用指定 validateAllProperties: true
参数。
documentation对于 Validator.TryValidateObject
不是很清楚这样一个事实,除非您将重载与 validateAllProperties: true
一起使用,否则只有 Required
属性将是检查。所以像这样修改调用:
var isValid = Validator.TryValidateObject(recipe,
context,
results,
validateAllProperties: true);
关于c# - 验证器忽略 MaxLength 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47584920/
我需要以某种方式将模型的 max_length 约束 Hook 到 Form 对象中。 假设我定义了一个带有字段的模型:name = models.CharField(max_length=30)现在
“On input while maxlength is active trigger even if maxlength is reached”,这是on input事件的经典用法。当达到 maxl
我正在尝试配置一个 TextView,它的 maxLines=3 并且它的每一行都有 maxLenght=30。 感谢您的帮助。 最佳答案 您可以对实际的 30 个字符使用 maxWidth 函数(平
在表单组验证中,我尝试应用输入最大长度,但是,这个最大长度取决于表单中的其他操作。如果它们改变,也改变 maxMsgLength 的属性值。 消息:['', Validators.maxLength(
我有一个 iOS 应用程序,我在其中使用 NSInputStream(基于 CFReadStreamRef)从网络套接字读取数据。我不断从服务器获取数据,并不断读取和处理它(使用 read:bytes
我的输入字段包含数字和特殊字符,例如逗号和点在计算字段的 maxLength 时,我想跳过特殊字符。 我不想限制特殊字符。 预期输出应为:- 1,234(总长度:- 4) Userna
我只是在忙着弄清楚 cakephp,看起来它会很有趣。 我有一个表单输入,如下所示: echo $form->input('Campaign.title', array('maxLength'=>'7
旧的 ng-maxlength="5"用于触发字段错误,但会继续允许用户输入。 maxlength="5"似乎在阻止输入。当我的表格上有 novalidate 时,这样做是否有 Angular ?当我
我对 AllenNLP 还很陌生,我目前正在使用它的预训练问答模型。我想知道它是否有 channel 长度限制以确保其性能?我知道 BERT 的最大长度为 512,并且会截断更长的段落。 我在 All
我正在处理 TFS 流程模板的自定义工作项,但收到错误指示我用于组控件的标签超过 MaxLength 值。谁能告诉我我可以贴在群组标签上的最大长度是多少? 最佳答案 如您所见,答案是 80。这是官方文
下面是我在注册和登录表单上使用的代码,限制用户输入有限数量的字符: $( "#limit1" ).attr('maxlength','11').on('input', function() { if
我使用的是 Entity Framework 4.3.1,代码优先,并在 SQL Profiler 中查看正在生成的查询。这是一个例子: 如您所见 - 它将参数指定为 nvarchar(max) 但在
我在互联网上发现输入的最大长度是: 524288 个字符 我找不到有关 textArea 的任何信息。 我需要传递一个最多 1 500 000 个字符的 var,因此我尝试找到类似于输入文本或可用于此
使用 jQuery 版本 1.2.3,我尝试在具有属性“maxlength”的 textarea 元素之后添加节点,但它不起作用: $("textarea[@maxlength]").after("A
我使用 Javascript 添加新的文本字段: var input = document.createElement("input"); input.type = "text"; input.nam
好的,所以我正在构建一个自定义注册页面,当然还涉及到 javascript 输入验证。 在该验证中,我使用了 maxlength 属性来验证输入的长度 - 这是一种双重安全,但很容易获得我认为的元素的
基本上,我正在向所有文本框动态添加 maxLength,但我想向那些没有 maxLength 的文本框添加默认 maxLength属性集。 如何使用 jquery、javascript 完成此操作?
我的 html 页面有问题 这里是页面的简化版本 function maxLength() {
我对 ASP.NET MVC3 客户端验证有一个奇怪的问题。我有以下类(class): public class Instrument : BaseObject { public int Id
我在 Vue 中有一个表单,由于电话号码输入的样式原因,它有一些组合输入。 我的问题是用户必须点击 Tab 键才能转到电话号码的下一个输入字段。 有没有办法检查当前和输入的最大长度,并在满足时转到下一
我是一名优秀的程序员,十分优秀!