返回null我有這樣定義的路由:生成RouteUrl在MVC3在一種情況下
routes.MapRoute("Date", "Date/{year}/{month}/{day}",
new { controller = "Date", action = "Index", year = UrlParameter.Optional,
month = UrlParameter.Optional, day = UrlParameter.Optional });
所以它有3個可選參數,年,月,日。它工作在路由GET請求,下面所有的工作細膩精緻:
http://myhost/myapp/Date
http://myhost/myapp/Date/2011
http://myhost/myapp/Date/2011/8
http://myhost/myapp/Date/2011/8/17
使用RouteUrl生成鏈接適用於所有的情況下,只有一個除外。
例如,我想要包含年份和月份的鏈接的情況正常工作。我用下面(簡化)代碼,在我看來:
string linkUrl = Url.RouteUrl("Date",
new { controller = "Date", year = 2011, month = 8 },
Request.Url.Scheme);
但其中只有一年是指不工作,返回null的情況下,代碼:
string linkUrl = Url.RouteUrl("Date",
new { controller = "Date", year = 2011 },
Request.Url.Scheme);
所以這一切看起來對我正確。任何線索我做錯了什麼,或如何進一步調試。
作爲一個可能的解決方法,那麼只需要一個「日期」參數,然後找出它在控制器代碼中的類型呢? – iain
日期爲字符串?使用/ Date/08-18-2011的URL?也許,但是當瀏覽器要求一年或者年份時,我需要展示一個不同的視圖。不過謝謝。 – iandotkelly
是的,就像那樣(或者沒有空格或斜線)。然後有一些代碼來檢查長度以找出它是什麼,然後建立日期時間? – iain