2011-05-30 94 views
0

我有一個MVC 3視圖,它顯示可以按日期過濾的項目列表。asp.net mvc:默認模型活頁夾問題

該過濾器是一個已經被jQueryUI綁定到日期選擇器中的文本框。

查看:

<%= Html.TextBoxFor(model => model.ReportedDate, new { @class = "datepicker" })%> 

腳本:

$(".datepicker").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     changeYear: true, 
     changeMonth: true 
}); 

在點擊一個按鈕,我搶在文本框中的值,並將其發送到我的控制器操作爲GET的查詢字符串參數請求:

MyController/Search?reportedDate=30/05/2011 

控制器動作:

public ActionResult Search(DateTime? reportedDate) 

從這我希望默認的模型聯編程序將reportedDate查詢參數轉換爲可以爲空的DateTime(在此上下文中表示所有日期或null篩選器爲null)。

但事實並非如此。 reportedDate始終爲空。我可以鑽入Request.QueryString並使用DateTime.TryParse手動進行轉換,這是我目前的工作,但我不明白爲什麼它首先失敗。

客戶端和服務器之間的日期格式沒有什麼區別,其他(在這裏省略,但在實際代碼中出現)其他數據類型(字符串和整數)的過濾器參數,並且它們的處理沒有問題。

任何建議爲什麼DateTime很麻煩?

回答

0

權,以及該問題日期格式畢竟,它看起來像預期的日期格式字符串是mm/dd/yyyy和日期快到了作爲dd/mm/yyyy

0

您可以使用添加新的路由路由表

routes.MapRoute(
"SearchRoute", 
"{controller}/{action}/{id}", 
new {controller = "Home", action = "Index", reportedDate = UrlParameter.Optional} 
); 

那麼您的網址將成爲

MyController/Search/30-05-2011 

,這將使你的控制器動作捕捉reportedDate

的價值,但你必須chaneg您在日期選取器