首页 > 解决方案 > ASP.NET MVC Razor 日期时间验证错误消息

问题描述

所以adjournHearingInfo的newHearingDate当我没有填写为错误信息时

值 '' 无效。" 值为 "1/1/0001 12:00:00 AM"

我无法弄清楚如何访问此检查以更改此错误消息。或者,如果这不可能,请删除此检查,以便我可以自己验证日期,然后生成我想要的错误消息。这可能吗?

目前,我可以向其中添加另一条错误消息,但我无法删除该错误消息。

DTO:

public class AdjournHearingDTO
{
    public int HearingID { get; set; }

    [Required(ErrorMessage ="Please enter a Date")]
    [Display(Name ="Additional Hearing Date")]
    [Range(typeof(DateTime), "1/1/1900","1/1/2060", ErrorMessage =("Please enter a valid date."))]
    public DateTime newHearingDate { get; set; }
}

.cshtml:

    public AdjournHearingDTO adjournHearingInfo { get; set; } 

    public IActionResult OnPost()
    {
        if (ModelState.IsValid)
        {
        }
        else
        {
            if (adjournHearingInfo.newHearingDate.Date.ToString() == "1/1/0001 12:00:00 AM")
            {
                ModelState.AddModelError("adjournHearingInfo.newHearingDate", "Invalid Date");
            };
            return Page();
        }
    }

HTML:

<form asp-page="AdjournHearing" method="post" name="AdjournHearingScreen" id="AdjournHearingForm">
    @if (!Model.ModelState.IsValid)
    {
        <div class="row">
            <div class="col-md-offset-2 col-md-10">
                <h3 class="text-danger">Validation Errors</h3>
                @*@Html.ValidationSummary(true, "", new { @class = "text-danger"})*@

                <div asp-validation-summary="All"></div>
            </div>
        </div>
    }
    <div class="container">
        <h1 class="mt-4 mb-3">
            <button asp-page-handler="Back" class="btn btn-secondary">Back</button>
        </h1>
        <div class="row">
            <div>
                <h4>Case: @Model.HearingDetail.CaseName</h4>
                <h5>
                    Hearing: @Model.HearingDetail.Name
                </h5>
                <div class="row">
                    <div class="card RoundedCorners">
                        <h6>Hearing Date: @Model.NewestHearingDate.ToString("g")</h6>


                        <div class="form-group">
                            <label asp-for="adjournHearingInfo.newHearingDate" class="control-label"></label>
                            <input asp-for="adjournHearingInfo.newHearingDate" class="form-control" />
                            <span asp-validation-for="adjournHearingInfo.newHearingDate" class="text-danger"></span>
                        </div>
                        <div class="" style="padding:1em 0 0 0;">
                            <button id="SubmitButton" class="btn btn-primary" type="submit"> Submit </button>
                            <button id="SubmitButtonDisabled" disabled style="display:none" class="btn btn-primary" type="submit"> Submit </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <input asp-for="HearingDetail.HearingID" type="hidden" />
</form>

标签: c#htmlasp.net-mvcrazor

解决方案


转到 wwwroot\lib\jquery-validation\dist\additional-methods.js 并找到

$.validator.messages.date );

尝试只删除消息或整行,看看它是否有效。


推荐阅读