簡體   English   中英

MVC ActionResult - Nullable或Optional參數

[英]MVC ActionResult - Nullable or Optional parameter

將頁碼傳遞給我的MVC操作以獲取分頁列表時,不需要提供頁碼。 如果未選擇頁碼,則數字默認為第一頁。
大多數文檔似乎都支持使用null合並運算符,例如

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異常

最后一個沒有意義Public ActionResult Demo(int? page = 1)

根據您的方案,前兩個操作方法不會有任何不同,因為參數是頁碼。 如果沒有提供參數,人們希望登陸第一頁。

但是,如果您關心該值,則不希望使用可選參數。

public ActionResult UserDetails(int? id)
{
    if (!id.HasValue)
        return View("UserNotFound"); // Or return a message.

    int userId = id.Value; 
    var user = _userService.GetUserById(userId);
    // Do something
}

您不能在上面的場景中使用可選參數 - public ActionResult UserDetails(int id = 123)

僅供參考: 您不想使用public ActionResult UserDetails(int id) 如果沒有提供id,它將導致崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM