0
我知道有大量的人得到這個錯誤,但大多數都使用內置的id
功能,其中我不是。超出了我讀過關於這個網站,我需要展示一個友好的錯誤,而不是建立在死亡黃屏:如何捕捉「空條目的參數」錯誤
參數字典包含參數「產品ID」非空的 無效項類型 'System.Int32'
我的網址...
/myController的/ MyView的?人= 789 &的productId = 123
...其中productId實際上應該包含整數值。儘管我在方法中檢查了它是null
,但MVC在執行檢查之前會拋出異常。
是否可以通過捕獲這個錯誤並提供錯誤視圖?
我知道我可以設置變量類型爲Int32?
,但這看起來像一個黑客,因爲方法確實需要值。
public ActionResult Show(string person, Int32 productId)
{
if (productId== null) // exception occurs before this point, so this check fails
{
return View("Error", new ErrorViewModel { Summary = "No value provided" });
}
// ....
}
請注意,Int32永遠不能爲空。所以你的支票是無效的。你真的需要int嗎?做一個空檢查。因此這不是真正的必要。 – 2014-09-02 15:42:08
但是有沒有其他的方法來檢查參數值是否在URL中提供?動作鏈接總是創造一個價值,但我試圖阻止人們搞亂網址。 – EvilDr 2014-09-02 15:47:01
錯誤本身就是「阻止人們使用URL」的方法。試圖捕捉用戶可能試圖做的每件事都是傻瓜的差事。如果他們弄亂了這個URL,他們會得到一個500.這沒什麼錯。 – 2014-09-02 15:54:17