2014-12-13 57 views
4

我的模型有一个必需的字符串,我可以提交表单并仍将文本框留空,并且模型状态返回为有效,因此我不知道什么是我做错了。这是我的网页上唯一一个正在执行此操作的控件。这里是我的代码:MVC中的必需值是空字符串,但modelstate仍然有效

型号

[Required(ErrorMessage = "Requirements are Required.")] 
[DataType(DataType.MultilineText, ErrorMessage = "Requirements is Required.")] 
[StringLength(200, ErrorMessage = "200 Characters is the maximum allowed for requirements.")] 
public string Requirements { get; set; } 

查看

<div class="form-group"> 
    @Html.LabelFor(model => model.Requirements, "Requirements:", htmlAttributes: new { @class = "col-sm-4 control-label" }) 
    <div class="col-sm-8"> 
     @Html.TextAreaFor(model => model.Requirements, htmlAttributes: new { @rows = "10", @cols = "50", @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Requirements) 
    </div> 
+1

您是否已经完成了一项测试,以查看是否有其他属性可能存在干扰? (即只有'[Required]'属性) – Jaans 2014-12-13 08:47:46

+0

还没有。我现在会尝试 – user3610374 2014-12-13 08:48:36

+2

我无法重现这一点。将显示验证消息,并且不会提交表单。 – 2014-12-13 08:55:47

回答

2

编辑
作为@Stephen Muecke指出,我不能重现你的情况都不是,它应该是足够的必需属性。 以某种方式回答我的答案如@MajkeloDev所述的解决方法。


你应该把MinimumLength = 10为你的领域。数200表示最大长度为您的字符串

[StringLength(200, MinimumLength = 10, ErrorMessage = "200 Characters is the maximum allowed for requirements.")] 

注意:M inimumLength = 10正在为一个有意义的输入一些数字。对于非空字符串就足够了MinimumLength = 1

+2

OP是否说过这个字符串不能少于10个字符? – MajkeloDev 2014-12-13 09:09:10

+0

我可以为我做这个工作 – user3610374 2014-12-13 09:24:14

+1

@MajkeloDev因为'HelloWorld'的长度是10. – 2014-12-13 09:41:10

相关问题