MVC .NET CORE-服务器端验证中未显示DataAnnotation的Required(ErrorMessage =“ Err”)

时间:2018-11-13 11:42:49

标签: .net ef-code-first asp.net-core-mvc data-annotations

我已经使用.Net MVC Core和Code First方法创建了一个Web应用程序,并通过脚手架生成了视图/控制器。

为了进行验证,我使用的是Fluent API和数据注释,并且一切似乎都正常。 但是,我的DataAnnotation的自定义错误消息仅在客户端验证中显示,并且当我阻止浏览器的JS来测试服务器端验证时,我收到以下错误消息:“ 值”无效

我尝试使用[DataType(DataType.DateTime,ErrorMessage =“无效的日期!”)]],但效果不佳!

我的模特:

    public class MyModel
{
    [Required(ErrorMessage = "Required field!")]
    [Display(Name = "Departure Date")]
    public DateTime DateDeparture { get; set; }

    [Required(ErrorMessage = "Required field!")]
    [Display(Name = "Arrival Date")]
    public DateTime DateArrival { get; set; }
 }

我的观点:

    public IActionResult Create()
    {
        return View();

    }

我的控制器:

    @model App.Models.MyModel

@{
    ViewData["Title"] = "Create";
}

    <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="DateDeparture" class="control-label"></label>
                <input asp-for="DateDeparture" class="form-control" />
                <span asp-validation-for="DateDeparture" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="DateArrival" class="control-label"></label>
                <input asp-for="DateArrival" class="form-control" />
                <span asp-validation-for="DateArrival" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </form>

客户端验证

Client-Side Validation

服务器端验证

Server-Side Validation

根据针对类似情况(Thread)的建议解决方案,我必须使字段为空! 这似乎并不是所有情况下的正确解决方案!而且我已经有了另一种带有Non-Nullable字符串的形式,该形式为客户端和服务器端验证生成相同的自定义错误消息,这就是为什么我认为问题与标量值有关,而不是与Non / Nullable类型选项有关,但是我无法找出原因,以便能够覆盖该服务器端验证消息!

任何帮助将不胜感激……

0 个答案:

没有答案