2010-12-15 42 views
2

空參數我有一個應該由一個自動化的過程只會被調用路線:允許在MVC路線

routes.MapRoute(
    "Automated file processing", 
    "Process/{change}/{file}/{type}", 
    new { controller = "C", action = "Process" } 
); 

如果雙方的filetype是可選的參數。理想情況下,我希望能夠致電

/Process/Created/Filename/Text (with file and type) 
/Process/DirectoryListing//Text (with type only) 
/Process/Created/Filename/  (with file only) 

你會如何獲得可選參數在中間?我用示例路由顯示,即使將file = "", type = ""添加到路由中,我也會得到:

HTTP Error 400 - Bad Request。

+0

我有一個類似的問題,我發佈在這裏:http://stackoverflow.com/questions/4743431/need-help-canonicalizing-an-http-get-form-in-asp-net-mvc。基本上,達林是對的。只有最後一個參數可以是可選的。 – danludwig 2011-01-22 05:45:31

+0

看到這個,http://bit.ly/dem6F5 – user960567 2012-04-08 04:46:06

回答

3

您不能在路線中間有可選參數。由於顯而易見的原因,只有最後的參數可以是可選的,或者路由引擎不能在不同的可能情況下消除歧義。

+5

我不明白爲什麼很顯然'//'永遠不會出現在路徑中...... – configurator 2010-12-15 09:25:38

0

我相信你需要添加file = UrlParameter.Optional, type = UrlParameter.Optional

對於可選的中間參數此人之前我所界定另一條路線。

+0

我認爲'file = UrlParameter.Optional'修復了這兩種情況都缺失的情況,但不是我缺少中間參數的情況(和'//'在網址中)。我將如何定義其他路線? 'Process/{change} // {type}'不起作用。 – configurator 2010-12-15 06:16:15

+0

是的,那是不行的。你可以做.... /文件 - {文件} /類型 - {類型},查詢字符串參數或類似的東西。 – 2010-12-15 06:23:25