MVC ActionResult - 可为 Null 或可选参数
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);
}
虽然在这种情况下将 page 作为可空类型似乎是多余的。
特别使用其中一种方法是否有任何好处,或者它只是语法糖。
编辑:修复了第三个示例中的空异常
最后一个没有意义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 会导致崩溃。
将页码传递到分页列表的 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);
}
虽然在这种情况下将 page 作为可空类型似乎是多余的。
特别使用其中一种方法是否有任何好处,或者它只是语法糖。
编辑:修复了第三个示例中的空异常
最后一个没有意义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 会导致崩溃。