Webフォーム内に、UIのテキストフィールドにバインドされたjquery datepickerがあり、それが隠しフィールドにバインドされています(HTMLではなくasp隠しフィールド)
<div class="dateContainer">
<span class="fbSmallLabel">Start Date</span>
<input id="txtStartDate" class="datequeryterm" type="text" value="<%= ((HiddenField)Parent.FindControl("hdnStartDate")).Value %>" />
</div>
日付が選択されると、ハンドフィールドが更新され、テキストボックスの値が更新されます
$("#btnApplyFilter").click(function () {
setFilterFields();
$.modal.close();
});
function setFilterFields() {
var startDate = $("#txtStartDate").val();
var endDate = $("#txtEndDate").val();
$("#hdnStartDate").val(startDate);
$("#hdnEndDate").val(endDate);
}
firebug または IE 開発ツールを使用すると、非表示フィールドが DOM で更新されていることがわかりますが、Web フォームから非表示フィールドを参照すると、null "" 値が取得されます。
protected void SetSearchFilterData()
{
DateTime dt;
string StartDate = hdnStartDate.Value;
string EndDate = hdnEndDate.Value;
if (DateTime.TryParse(StartDate, out dt))
{
srchRequest.DateRangeStart = DateTime.Parse(StartDate);
}
if (DateTime.TryParse(EndDate, out dt))
{
srchRequest.DateRangeEnd = DateTime.Parse(EndDate);
}
}
変数の割り当てで何が起こっているのかを明示的に確認しようとしていたため、この方法は少し基本的です。以前は、次の方法で開始日と終了日を宣言していました
public string StartDate
{
get { return hdnStartDate.Value; }
set { hdnStartDate.Value = value; }
}
これでフィールドが検出されましたが、値は引き続き null です。
任意の提案をいただければ幸いです
-乾杯