public class SearchForm {
//Note: Property is nullable
public DateTime? CurrentViewDate {get;set;}
public DateTime StartDate {get;set;}
}
//In the controller
//[GET]
public ActionResult Index()
{
}
//[POST]
public ActionResult Index(SearchForm formModel)
{
if(formModel.CurrentViewDate == null)
formModel.CurrentViewDate = DateTime.Now.AddDays(1d);
else
formModel.CurrentViewDate = formModel.CurrentViewDate.AddDays(1d);
formModel.StartDate = DateTime.Now;
}
//In view
@Html.HiddenFor(c => c.CurrentViewDate).
<input id="SearchForm_CurrentViewDate" name="SearchForm.CurrentViewDate"
type="hidden" value="5/25/2012 11:59:59 PM" />
<input type="submit" name="btnNext" id="btnNext" value="Go Increment" />
しかし、送信をクリックすると値が増加しますが、非表示の for フィールドは前の値を保持し、正しい値を表示する唯一の方法は If do this @Html.HiddenFor(c => c.CurrentViewDate.Value) ですが、その後バインディング名が異なるため、formModel.CurrentViewDate の再投稿には null 値があります。
何か案は?CurrentViewDate プロパティではなく、StartDate プロパティから日時値を取得しているように感じます