HTML形式に含まれるBootstrap datepickerからASP.NET MVC3コントローラーに日付を渡そうとします。過去の日付を選択すると、コントローラーに渡されたモデルの適切な DateTime フィールドに正しい値が入力されます。ただし、現在または将来の日付を選択すると、StartDate DateTime フィールドに 0001-01-01 の値が表示されます。ビューのコードは次のとおりです。
@using (Ajax.BeginForm("AddNewActivity", "Home", null, new AjaxOptions
{
HttpMethod = "Post",
UpdateTargetId = "activitiesTableDiv",
InsertionMode = InsertionMode.Replace,
OnBegin = "disableButton"
}))
{
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
Start date
</div>
<div class="editor-field">
<input id="StartDate" data-date-format="dd-mm-yyyy" class="pickDate form-control valid"
type="text" name="StartDate" data-val-required="The StartDate field is required."
data-val="true" />
@Html.ValidationMessageFor(model => model.StartDate)</div>
</fieldset>
}
コントローラ側 - POST メソッド:
public ActionResult AddNewActivity(ActivityModel model, FormCollection collection)
{
var test = model.StartDate;
if (model.ObjectId == null)
objectid = model.ObjectId;
var jury = model.UserIds.Split(';').ExtractInt32();
string[] emails = jury.Select(i => Storage.UserGetById(i).Email).ToArray();
if (model.UserIds.Length > 1 && model.UserIds[model.UserIds.Length - 1] == ';')
model.UserIds = model.UserIds.Substring(0, model.UserIds.Length - 1);
var tags = HtmlHelperExtension.ExtractCheckListBoxResult(collection).Where(i => i.Item2).Select(i => i.Item1).ToArray();
var groups = model.ChosenGroups.Where(i => i.Checked == true).Select(i => i.Id).ToArray();
var url = String.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/"));
SendActivityEmails(model.Name, url + "OIP/Activity/", emails);
return RedirectToAction("_Activities", "OIP");
}
モデル:
public class ActivityModel
{
public long Id { get; set; }
public string ObjectId { get; set; }
public TagDTO[] Tags { get; set; }
public ModelItemChecked[] ChosenTags { get; set; }
public DateTime StartDate { get; set; }
public DateTime Deadline { get; set; }
public DateTime ResultsAnnouncement { get; set; }
}
同様の問題を抱えている人を見つけることができません。