何が間違っているのかわかりません。さて、私はこのフォームを持っています、それは複雑なビューの一部です。
@{
var filtersAjaxOptions = new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "clientList-body",
OnBegin = "clientList.filterRequestStart()",
OnComplete = "clientList.filterRequestComplete()",
OnSuccess = "clientList.filterRequestSuccess()"
};
}
<span class="clientFilters-filterValue inlineBlock">
@using (Ajax.BeginForm(
"Index",
"ClientList",
new {
ProductId = Model.ClientListViewModel.Filters.ProductId,
ClientFilter = Model.ClientListViewModel.Filters.ClientFilter,
BillFilter = Model.ClientListViewModel.Filters.BillFilter,
DateSortType = Model.ClientListViewModel.Filters.DateSortType,
SortDirection = Model.ClientListViewModel.Filters.SortDirection
},
filtersAjaxOptions,
new
{
id = "clientListDateFilter-form"
}
))
{
@Html.TextBoxFor(
m => m.ClientListViewModel.Filters.BeginDateRange,
new
{
@class = "dp-input textInput inlineBlock",
id = "dp-billDateFilterStart",
}
)
@Html.TextBoxFor(
m => m.ClientListViewModel.Filters.EndDateRange,
new
{
@class = "dp-input textInput inlineBlock",
id = "dp-billDateFilterEnd",
}
)
}
</span>
これがフィルターモデルです
public class FilterModel
{
public FilterModel()
{
ClientFilter = ClientsEnum.All;
BillFilter = ClientBillsEnum.All;
}
public string ProductId { get; set; }
public ClientsEnum ClientFilter { get; set; }
public ClientBillsEnum BillFilter { get; set; }
public DateTime? BeginDateRange { get; set; }
public DateTime? EndDateRange { get; set; }
public DateSortType? DateSortType { get; set; }
public SortDirection? SortDirection { get; set; }
}
この部分はClientListControllerメソッドインデックスです:
public ActionResult Index(FilterModel filters)
{
var clientListViewModel = GetClientListViewModel(filters, 1, 1, PageSize);
if (ControllerContext.HttpContext.Request.IsAjaxRequest())
return PartialView("Partial/ClientListBody", clientListViewModel);
return View(clientListViewModel);
}
上記のフォームを送信するたびに、フィールド「BeginDateRange」と「EndDateRange」がnullであり、他のフィールドが適切に設定されていることがわかります。ただし、 WatchにRequest.Formを挿入すると、データ全体を表示できます。
UPDATE 1 そこで、Web.configの<グローバリゼーション>を次のように設定します。
<globalisation responseHeaderEncoding="utf-8" culture="en-US">
それでも機能しません。以前と非常に同じ結果。
UPDATE 2 また、すべてのroutevaluesデータを@ Html.HiddenForに入れようとすると、コントローラーはnullのみを認識しました。また、Request.Formは正しく入力されています。
したがって、問題は、フォームデータを受信モデルにバインドするにはどうすればよいですか?TY