4
當爲頁面列表傳遞頁碼給我的MVC操作時,不需要提供頁碼。如果沒有選擇頁碼,則編號默認爲第一頁。
大部分文檔似乎都贊成使用空合併運算符,例如MVC ActionResult - 可爲空或可選參數
Public ActionResult Demo(int? page)
{
const int pageSize = 10
var model _db.Model.ToPagedList(page ?? 1, pageSize);
return View(model);
}
或類似的東西。
我想知道是否有使用默認參數的好處,例如,
Public ActionResult Demo(int page = 1)
{
const int pageSize = 10
var model _db.Model.ToPagedList(page, pageSize);
return View(model);
}
甚至
Public ActionResult Demo(int? page = 1)
{
const int pageSize = 10
var model _db.Model.ToPagedList(page.Value, pageSize);
return View(model);
}
雖然有頁面,在這種情況下可空類型似乎是多餘的。
特別是使用這些方法有什麼好處,還是僅僅是語法糖。
編輯:在第三個例子固定調零例外
至於最後一個選項,我不會說多餘但錯誤 - 因爲如果他們通過'null'即'page'將等於什麼,並且您可能會從ToPagedList方法中獲得異常 –
AFAIK 1)_支持可選參數之前的老方法。當邏輯比簡單的常量值更復雜時仍然需要。如果在一個被調用的函數中定義了常量值,並且您需要_propagate_ null,那麼也需要它。2)如果客戶端沒有辦法說「使用默認值」但仍然發送參數,那麼通用方法是3)如果您需要一種方法爲客戶說出「使用默認值」併發送參數。 2/3通常是等價的,但_sentinel_值如果用得太多可能會有害...... –
同樣對於最後一個選項,您必須使用'page.Value',除非'.ToPagedList'碰巧使用'int?'for其第一個參數。 –