我有一個路線:優雅的方式
routes.MapRoute("ResetPasswordConfirm", "reset-password-confirm", new { controller = "Membership", action = "ResetPasswordConfirm" });
和代碼
public ActionResult ResetPasswordConfirm(int userid, string key)
{
// ...
}
在我的應用程序
。所以,我有URL以這樣的方式執行:
http://localhost/reset-password-confirm?userid=1&key=bla_bla_something
這絕對是好的,直到有人決定去
http://localhost/reset-password-confirm
...看看會發生什麼。 ASP.NET將產生可預測的錯誤:
The parameters dictionary contains a null entry for parameter 'userid' of non-nullable type 'System.Int32'...
它也可以通過搜索機器人嘗試抓取所有可能的URL。沒關係,但在野外使用應用程序時會產生很多錯誤。我想避免這種情況,但對於爲這類錯誤的每種可能情況編寫一個存根感覺不舒服。
有沒有什麼優雅的方式呢?謝謝。
你也可以使用默認值,當然你必須讓它們保持最後的限制,例如, 'public ActionResult ResetPasswordConfirm(string key,int userid = 0)' – bhamlin