ViewModelが関連付けられているビューでDatePickerを操作しています。ポストアクションを実行してコントローラーに戻すと、ViewModelが再度インスタンス化され、一部の値がビューから使用できなくなります。
コントローラのアクションは次のとおりです。
public ActionResult Search()
{
ProjectSearchViewModel viewModel =
new ProjectSearchViewModel(
DateTime.Today.AddMonths(-1),
DateTime.Today.AddDays(1));
return View(viewModel);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Search(ProjectSearchViewModel viewModel)
{
try
{
//Always returns a value from UI
DateTime startDate = viewModel.StartDate;
//NEVER returns a Value from UI
DateTime endDate = viewModel.EndDate;
....。
ビューのマークアップは次のとおりです。
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/TabbedViewMasterPage.master"
Inherits="System.Web.Mvc.ViewPage<Reactivity.Web.Models.ProjectSearchViewModel>"
%>
..。
<label for="StartDate">
Start Date:
</label>
<% Html.jQuery().DatePicker()
.Name("StartDate")
.AllowMonthChange(true)
.AllowYearChange(true)
.ShowOn(DatePickerShowOn.Focus)
.ShowOtherMonths(true)
.Value(ViewData.Model.StartDate)
.Render(); %>
<br />
<label for="EndDate">
End Date:
</label>
<% Html.jQuery().DatePicker()
.Name("EndDate")
.AllowMonthChange(true)
.AllowYearChange(true)
.ShowOn(DatePickerShowOn.Focus)
.ShowOtherMonths(true)
.Value(ViewData.Model.EndDate)
.Render(); %>
<br />
<input type="submit" value="Search" />
DatePicker(ビュー上の2つのインスタンス)は正常に機能します。
ViewModelフィールド(viewModel.EndDate)がコントローラーアクションに入力されて返されるようにするにはどうすればよいですか?または、これはフォームに2つの(MVC)DatePickersがある場合の問題ですか?
ブライアンに感謝します