請參閱下面的代碼:應該所有的ActionResult參數都是可空的嗎?
[HttpPost]
public ActionResult Details(Guid personID)
{
//do some work
}
如果用戶瀏覽詳細信息沒有通過PERSONID,那麼應用程序錯誤。你如何處理這個問題?使用Web窗體我會在頁面加載開始時測試參數不爲空。但是,這對於MVC來說是不可能的。
請參閱下面的代碼:應該所有的ActionResult參數都是可空的嗎?
[HttpPost]
public ActionResult Details(Guid personID)
{
//do some work
}
如果用戶瀏覽詳細信息沒有通過PERSONID,那麼應用程序錯誤。你如何處理這個問題?使用Web窗體我會在頁面加載開始時測試參數不爲空。但是,這對於MVC來說是不可能的。
您可以使您的參數爲可空,並在訪問它之前檢查該參數是否爲空。
public ActionResult Details(Guid? personID)
{
if(personID!=null)
{
// use personID.Value
}
else
{
}
// to do : return something
}
對於你的http發佈動作mehod也可以這樣做。但是您需要爲http get和action方法提供唯一的方法簽名。所以我假設你在HttpPost操作方法中有更多的參數。
有雙向,
首先使用Default
值參數和檢查Guid.Empty
其次使用nulable
參數和檢查HasValue
屬性
默認參數樣品
[HttpPost]
public ActionResult Details(Guid personID = Guid.Empty)
{
if(personID == Guid.Empty)
{
//do some work
}
else
{
// do some work
}
}
Nulable參數樣本
public ActionResult Details(Guid? personID)
{
if(personID.HasValue)
{
//do some work
}
else
{
// do some work
}
}
應始終將可爲空的參數與ActionResult一起使用方法?有沒有這種情況下,他們不應該使用? – w0051977
沒有必要使用它,以便參數不會爲空。你可以試試這個代碼嗎?我認爲這個代碼解決了這個問題。 –
你可以使用一個可空參數如下圖所示:
[HttpPost]
public ActionResult Details(Guid? personID)
{
if(personID != null)
{
//do some work
}
}
所以,你可以調用使用正確的數據類型或空傳遞作爲參數的方法。
你是在談論你的GET操作還是後期操作方法?您已經在問題中顯示了httppost操作方法。 – Shyju
@Shyju,我正在談論這兩者。我試圖瞭解如何處理空參數。 – w0051977
你也可以在MVC中檢查它是否爲空。 –