gpt4 book ai didi

asp.net-mvc-4 - MVC字段不是必需的,但被告知用户

转载 作者:行者123 更新时间:2023-12-02 06:36:23 25 4
gpt4 key购买 nike

标题说明了一切。该模型不需要StartDate字段,但在POST上被告知是必需的。它是几个搜索字段之一,每个搜索字段都是可选的。因此,我没有检查IsModel.Valid,因此无论如何搜索都有效,但是消息显示在屏幕上。如果我在 View 中设置@ Html.ValidationSummary(true),则会隐藏该消息,但该字段仍变为红色。

另外,我确实要进行检查以确保EndDate晚于StartDate,因此我需要显示错误消息/需要的字段,而不是在没有错误时显示。

这是代码:

型号(局部)

[Display(Name = "Start Date")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }

[Display(Name = "End Date")]
[GreaterThanOrEqualTo("StartDate", ErrorMessage = "End Date must be later than Start Date")]
[DataType(DataType.Date)]
public DateTime EndDate { get; set; }

VIEW(部分)
@using (Html.BeginForm()){ 
@Html.ValidationSummary(false)
<table>
<tr>
<td>
@Html.DisplayNameFor(m => m.StartDate)
@Html.TextBox("StartDate", "", new { @class = "datefield" })

etc.

共享/显示模板
@model Nullable<DateTime>
@(Model != null ? string.Format("{0:M/d/yyyy}", Model) : string.Empty)

共享/编辑模板
@model Nullable<DateTime>
@{
DateTime dt = DateTime.Now;
if (Model != null)
{
dt = (System.DateTime) Model;

}
@Html.TextBox("", String.Format("{0:M/d/yyyy}", dt.ToShortDateString()), new { @class = "datefield", type = "date" })
}

顺便说一句,其中一些编辑器是用来制作弹出式日历的。

我尝试以一种或另一种方式打开/关闭各种功能,但它仍然说日期字段是必填项。有任何想法吗?谢谢。

最佳答案

如注释中所述,如果您不将其设置为空,则将诸如DateTime,int,decimal等值类型视为必需。

如果GreaterThanOrEqualTo属性不是来自库(例如MVC Foolproof Validation),则如果两个Startdate和Enddate均为null,则应让它返回true。否则,您将不得不编写自己的自定义验证属性,但这并不难。

关于asp.net-mvc-4 - MVC字段不是必需的,但被告知用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com