一般的に使用されるclient/jquery関連の関数と検証を含むcommon.jsファイルがあります。このcommon.jsは_Layout.cshtmlに含まれています。このcommon.jsファイルには、以下のように、アプリケーション全体の均一性を維持するためのdatepickerコードがあります。
function OsDatepicker(id, date, maxdt, dDate) {
var ctrl = "#" + id;
var d = new Date();
var currYear = d.getFullYear();
if (date == 0)
var yrrange = (parseInt(currYear) - 4) + ":" + (parseInt(currYear) + 2);
else
var yrrange = (parseInt(currYear) - 70) + ":" + (currYear);
$(ctrl).datepicker({ dateFormat: 'dd/mm/yy',
changeYear: true,
autoSize: true,
yearRange: yrrange,
constrainInput: true,
showOn: "both",
buttonImage: '../../../Content/images/Calendar.png',
buttonImageOnly: true,
showanim: "slide",
//defaultDate: dDate, //not working
inline: true
});
if (maxdt == 0)
$(ctrl).datepicker("option", "maxDate", "+0d");
$(ctrl).datepicker("option","setDate", new Date(dDate)); //not working
}
上記の関数は、cshtmlスクリプトで次のように呼び出されます。
$(document).ready(function () {
var dobDate = $("#Date_Of_Birth").val();
var jtDate = dobDate.split(" ");
OsDatepicker('Date_Of_Birth', 1, 0, jtDate[0]);
});
私のかみそりのコードは、生年月日については以下のとおりです
<div style="width: 260px; float: left; height: 45px;">
<label class="field_title">
@Html.LabelFor(model => model.Date_Of_Birth)</label>
<div class="form_input">
@Html.EditorFor(model => model.Date_Of_Birth)
@Html.ValidationMessageFor(model => model.Date_Of_Birth)
</div>
</div>
上記のマークアップは以下のとおりです。
<input class="text-box single-line" id="Date_Of_Birth" name="Date_Of_Birth" type="text" value="13-10-1988 00:00:00" />
ご覧のとおり、モデルは日付を正しくフェッチしており、OSDatepicker関数にも正しく渡されています。
フォームをロードすると、DateofBirthテキストボックスが空白になり、これをクラックできなくなります。あなたの提案は役に立ちます。前もって感謝します。