10

我有剃刀文件,我在其中定义带有字符串文本框的 html 表单:

    @using (Html.BeginForm()) {
        @Html.ValidationSummary(true)
        <fieldset>
        <legend>Product</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
        </fieldset>
     }

问题是,我希望这个字段(model.name)不能为空,但是剃刀验证允许字符串为空,当我将空字符串添加到模型时它会给出错误。有什么建议可以简单地验证这个字符串不再为空吗?

4

3 回答 3

22

您可能需要设置 DataAnnotation 属性

[必需(AllowEmptyStrings = false)]

在您要应用验证的财产之上。在 ASP.NET MVC 3 unobtrusive validation 中查看RequiredAttribute with AllowEmptyString=true
这个问题

类似的问题,或多或少在这里。
如何将具有空值的文本框转换为空字符串

希望你能解决你的问题

于 2013-07-07T10:45:23.230 回答
5

你的视图模型是什么样的?

您可以在视图模型中为您的属性添加一个DataAnnotation属性Name

public class MyViewModel
{
    [Required(ErrorMessage="This field can not be empty.")]
    public string Name { get; set; }
}

然后,在您的控制器中,您可以检查发布的模型是否有效。

public ActionResult MyAction(ViewModel model)
{
    if (ModelState.IsValid)
    {
        //ok
    }
    else
    {
        //not ok
    }
}
于 2013-07-07T14:48:00.667 回答
0

这对我有用:
使用以下行不接受空字符串

[Required (AllowEmptyStrings = false)]

而这个不允许空白

[RegularExpression (@".*\S+.*", ErrorMessage = "No white space allowed")]
于 2019-03-20T09:04:50.143 回答