MVC ActionResult-可为null或可选参数

本文关键字:参数 null ActionResult- 可为 MVC | 更新日期: 2023-09-27 18:16:03

当将页码传递给分页列表的MVC操作时,不需要提供页码。如果未选择页码,则编号默认为第一页
大多数文件似乎支持使用零合并运算符,例如

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);
}

尽管在这个实例中,将page作为可为null的类型似乎是多余的。

特别使用其中一种方法有什么好处吗?或者这只是语法糖。

编辑:修复了第三个示例中的null异常

MVC ActionResult-可为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,它将导致崩溃