【发布时间】:2016-11-18 05:23:40
【问题描述】:
我是 Web 编程新手,我不得不使用 Jquery 数据时间插件。我在数据时间转换中遇到了很多问题,所以我做了一个简单但奇怪而冗长的逻辑来处理它。 而不是创建 One DateTime 属性。我做了两个,一个是字符串,另一个是 ViewModel 中可以为空的日期时间
注意:所有这些代码都是用 ViewModel 编写的
public DateTime? InitialStartDate
{
get
{
return istartDate;
}
set
{
istartDate = value;
}
}
public string IStartDateString
{
get
{
if (istartDate == null)
{
return "";
}
else
{
return istartDate.Value.ToString("MM/dd/yyyy");
}
}
set
{
if (string.IsNullOrEmpty(value))
{
istartDate = null;
}
else
{
DateTime TempDate=DateTime.Min;
if(DateTime.TryParseExact(value, "MM/dd/yyyy", CultureInfo.InvariantCulture, out TempDate)
{
InitialStartDate=TempDate;
}
else{
InitialStartDate=null;
ErrorMessage="Can not convert date";
}
}
}
}
请告诉我如何很好地处理它。
其次
例如,这个逻辑很好,然后我想添加 ModelState 错误。例如
if(DateTime.TryParseExact(value, "MM/dd/yyyy", CultureInfo.InvariantCulture, out TempDate)
{
InitialStartDate=TempDate;
}
else{
InitialStartDate=null;
ModelState.AddError('Date is not right ');
}
有没有这样的。请帮助并非常感谢您阅读我所有的问题:)
例如我这样解析它
InitialStartDate= DateTime.ParseExact(value, "MM/dd/yyyy", CultureInfo.InvariantCulture);
值是 201 年 1 月 1 日 它会抛出异常。我不希望它抛出异常但添加验证错误,所以稍后在控制器中检查 ModelState.IsValid 它返回 false,我可以在视图中显示它。
@Html.LabelFor(model => model.InitialStartDate, htmlAttributes: new { @class = "control-label col-offset-2" })
@Html.TextBoxFor(model => model.IStartDateString, new { @id = "initialstartdate", value = Model.IStartDateString, @class = "form-control", tabindex = "34" })
@Html.ValidationMessageFor(model => model.InitialStartDate, "", new { @class = "text-danger" })
我正在从视图中设置它的值。
在我的模型中包含所有其他属性。我有这个
[DataType(DataType.Date)]
public DateTime? StartTime { get; set; }
【问题讨论】:
-
您想解决什么样的问题?在带有 jquery datetime 插件的 MVC 中,我经常使用带有
Html.EditorFor模型绑定的 jQuery datepicker,将模型发送到控制器并在给定无效日期时间格式时执行ModelState.AddModelError("message")。请尽可能向我解释详细的预期结果。 -
@TetsuyaYamamoto 在问题末尾添加了更多文字。
-
value变量从哪里获取数据?如果您有模型类,请显示它。我发现您想在无效的日期时间格式上使ModelState无效并在您的视图中显示错误消息。 -
@TetsuyaYamamoto 添加了更多文本。请看一下
标签: c# jquery validation viewmodel modelstate