我已经 - 正式表达 - ASP.NET MVC 项目中的
IActionResult Index(object? obj)
控制器方法。如果我在没有任何路由值的情况下通过 Web 前端的主菜单调用它,它会生成输入参数的空对象而不是空值,但为什么呢?
简要说明:我的项目的一部分是员工管理系统。
Employees
的索引页面根据员工所属的区域显示员工列表。如果未选择区域,则显示所有员工。当第一次调用 Index
页面时,没有选择区域,因此我希望控制器方法中的变量具有值 null
。
具体而言,这意味着我的控制器方法如下所示(示例):
public IActionResult Index(Area? area)
{
if (area == null)
{
return View();
}
else
{
return View(area.Id);
}
}
以及对应的
Area
类,像这样:
public class Area
{
public int Id { get; set; }
public string Key { get; set; }
public string? Name { get; set; }
// ...
}
我通过以下方式调用
Index
方法:
<a class="nav-link" asp-controller="Employees" asp-action="Index">Employees</a>
因为没有路线值或类似的值。我希望控制器方法中的变量
area
== null
。但它是一个空的 Area
对象,如下所示(同时我尝试定义一个默认值 == null
。正如您在屏幕截图中看到的。但它也不起作用)
运行时面积值:
Neil 的触发器给了我尝试通过路由值发送
null
值的想法。这也不起作用,但最终它给了我以下解决方法:
public IActionResult Index(object? obj)
{
Area? area = null;
if(obj is Area chkArea)
{
area = chkArea;
}
...
}
这个方法可行,但我真的不知道该怎么做。尽管如此,我认为它仍然比检查area.Id == 0更好,因为理论上可能存在ID == 0的区域...
感谢您的帮助