次の HTML フォームがあります。
@using(Html.BeginForm("EditCourse", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="twelve columns" style="margin:10px 0px 30px 30px">
<div class="row">
<div class="six columns" style="margin-left:-5px; width:320px;">
@Html.LabelFor(c => c.Course.Name)
@Html.EditorFor(c => c.Course.Name)
@Html.HiddenFor(c => c.Course.CourseID)
</div>
<div class ="six columns" style="width:320px;">
@Html.LabelFor(c => c.Course.Author)
@Html.EditorFor(c => c.Course.Author)
</div>
<div class="row">
<div class="twelve columns" style="width:640px;">
@Html.LabelFor(c => c.Course.Description)
@Html.EditorFor(c => c.Course.Description)
</div>
</div>
<div class="row">
<div class="six columns" style="width:320px;">
@Html.LabelFor(c => c.Course.ParticipationPoints)
@Html.EditorFor(c => c.Course.ParticipationPoints)
</div>
<div class="six columns" style="width:320px; float:left;">
@Html.LabelFor(c => c.Course.ExpiryDate)
<input type="text" id="expires" name="expires" /><br />
@Html.EditorFor(c => c.Course.ExpiryDate)
</div>
</div>
<div class="row">
<div class="twelve columns" style="width:640px;">
@Html.LabelFor(c => c.Course.CategoryGroupID, "Category")
@Html.DropDownListFor(c => c.Course.CategoryGroupID, new SelectList(Model.CategoryGroups, "CategoryGroupID", "CategoryGroupName", Model.Course.CategoryGroupID))
</div>
</div>
<div class="row">
<div class="six columns">
@Html.HiddenFor(c => c.Course.UploadDate)
</div>
</div>
<div class="twelve columns">
<input id="FileSubmit" type="submit" class="medium button bottom20 top20" value="Save Changes" style="margin-left:235px;"/>
</div>
</div>
</div>
}
私の editfor の expirydate 内では、日時の完全な文字列形式として表示されますが、UI からは、ユーザーが UI に shortdatestring のみを表示するようにしたいので、次の JavaScript を記述しました。
$(document).ready(function () {
$('#expires').datepicker({ dateFormat: 'dd/mm/yy' });
$('#expires').val('@Model.Course.ExpiryDate.ToString("dd/MM/yyy")');
$("#expires").change(function () {
var currentDate = $(this).val();
var array = currentDate.split("/", 3);
var day = array[0];
var month = array[1];
var year = array[2];
$('#Course_ExpiryDate').val(month + "/" + day + "/" + year + " 23:59:59");
});
});
ページが読み込まれると、英国形式で表示するために追加した入力ボックスに日付が正しく表示され、有効期限のエディターを表示して、ボックスへの変更がエディターで米国形式で更新されるようにしました。
日付を変更せずにモデルを編集しようとすると、期待どおりに機能し、コントローラーに直接ジャンプしてフォームを処理します。ただし、日付を変更すると変更されず、ページに既にレンダリングされているもののいくつかを見つけることができない HTML フォームにジャンプします。
この問題の原因は何ですか?