我将创建一个用户必须输入日期和时间的表单。在数据库中,我将在一列中合并日期和时间。我怎么能用ASP.NET MVC和C#做到这一点?
信息:您可以在下方找到我的HTML代码
<form action="~/admin/NieuweCreateActiviteit" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="control-label col-md-2 required" for="NieuwActiviteit_StartPeriode">Aanvang datum</label>
<div class="col-md-6">
<input id="NieuwActiviteit_StartPeriode" name="NieuwActiviteit.StartPeriode" type="date" class="form-control text-box single-line col-md-6" required data-val="true" data-val-date="Dit veld moet een geldige datum bevatten." data-val-required="Dit veld is vereist." value="">
@Html.ValidationMessageFor(model => model.NieuwActiviteit.StartPeriode, "", new { @class = "text-danger" })
</div>
<div class="col-md-4">
<div class="form-group" style="margin-bottom: 0">
<label class="control-label col-md-6 required">Uur</label>
<div class="col-md-6">
<input type="time" class="form-control" required data-val-required="Dit veld is vereist." name="BeginUur" />
</div>
</div>
</div>
</div>
</form>
在控制器中接收日期(属性名称NieuwActiviteit.StartPeriode
1 )和时间(属性名称BeginUur
)作为分离的属性。
所以我的解决方案是将时间分成(:
),并使用方法AddHours
和AddMinutes
为该属性添加时间StartPeriode
。
但它不起作用。如果我在下面的代码中的标记行上放置一个断点,变量tempstartuur
和tempstartmin
就可以了,但是如果我走到下一行,则不会将小时数添加到属性{{1} }。
这是我的控制器的代码
StartPeriode
信息:视图模型
[HttpPost]
public ActionResult NieuweCreateActiviteit(CreateActiviteitViewModel a)
{
int tempstartuur, tempstartmin;
if (int.TryParse(a.BeginUur.Split(':')[0], out tempstartuur) && int.TryParse(a.BeginUur.Split(':')[1], out tempstartmin))
{
a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur); // breakpoint
a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin);
}
else
{
AddErrors(new IdentityResult("Start uur is geen uur"));
return View(a);
}
// insert in database
return View();
}
我的代码出了什么问题?
提前致谢
1 抱歉,我正在用荷兰语编程......如果您在翻译时遇到问题,可以在评论中问我。
答案 0 :(得分:4)
AddHours
和AddMinutes
不会修改您调用它们的实例,它们会返回一个新值。所以:
a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur);
a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin);
引用AddHours方法的documentation
:
返回一个新的DateTime,它将指定的小时数添加到此实例的值中。