我有這樣在HTTP GET中的MVC5 ViewModel綁定?
public ActionResult Overview(TimeAxisVM TimeAxis = null)
{
return View(new OverviewVM());
}
查看這樣
public class TimeAxisVM
{
// omitted ctor
[DataType(DataType.DateTime)]
public DateTime? From { get; set; }
[DataType(DataType.DateTime)]
public DateTime? To { get; set; }
}
的編輯模板視圖模型
@model TimeAxisVM
@using (Html.BeginForm("Overview", "Controller", FormMethod.Get))
{
@Html.EditorFor(model => model.From)
@Html.EditorFor(model => model.To)
<button type="submit">Submit</button>
}
而對於這樣的概述動作視圖模型的動作
@model OverviewVM
@Html.EditorFor(model => model.TimeAxis)
當我執行GET請求時,這是查詢字符串是TimeAxis.From = 22. + 02. + 2014 & TimeAxis.To = 25. + 02. + 2014但是一旦在動作TimeAxis.From和TimeAxis.To都是空的。
如果我將表單方法更改爲POST,它會立即按預期工作。從設計角度來看,這應該/必須是一個GET請求。
任何想法如何使模型綁定工作的GET?
UPDATE:
改變動作
public ActionResult Overview(DateTime? From = null, DateTime? To = null)
併發送這種形式的請求:... /概述/從= 22 + 02 + 2014 &要= 25? + 02. + 2014也適用。
但我想保留它封裝在類中,並且不需要更改輸入字段名稱 - EditorFor將它們生成爲TimeAxis.From和TimeAxis.To。我可能會將其他屬性添加到ViewModel /表單。
22. + 02. + 2014不是有效的日期字符串。您需要將其格式化爲22-02-2014之類的內容。要麼,要麼你將不得不創建一個自定義模型聯編程序來解析你的參數 –
它在我的語言環境中有效,它們解析得很好。正如我所說,如果我使用POST它的作品。除非空格的編碼方式不同,否則不用'+' –
這是什麼語言環境?我從來沒有聽說過使用空格和句點格式的日期字符串。 –