Asp.net mvc 方法不';当我使用时,你不工作吗?整数后
我有这样的行动方法:Asp.net mvc 方法不';当我使用时,你不工作吗?整数后,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我有这样的行动方法: public ActionResult Index(int? mid) { IList<SubGroup> SubGroupLit = (mid != null) ? _subGroupService.GetAllWithGroupId(mid) : _subGroupService.GetAll(); return View(SubGroupLit); } 公共行动结果索引(int?mid) { IList s
public ActionResult Index(int? mid)
{
IList<SubGroup> SubGroupLit = (mid != null) ? _subGroupService.GetAllWithGroupId(mid) : _subGroupService.GetAll();
return View(SubGroupLit);
}
公共行动结果索引(int?mid)
{
IList subsublit=(mid!=null)?\u subsubservice.GetAllWithGroupId(mid):\u subsubservice.GetAll();
返回视图(子视图);
}
我发现这个错误:
与“ServiceLayer.Interfaces.ISubGroupService.GetAllWithGroupId(int)”匹配的最佳重载方法具有一些无效参数
但是当我删除int
之后的?
(在索引
参数中)时,它工作正常
有什么不对?这个
?
表示它可以为空。但是,您的GetAllWithGroupId
方法只接受int
。如果mid
恰好作为null
传递,则无法将其传递到该方法中,因为null
不是int
。因此出现了错误。您需要做的是将mid
变成一个int
,正如您已经提到的,它可以工作。或者您需要检查mid
是否有一个值,然后将该值传递给该方法。看起来您已经在尝试使用三元数,但是您犯了一些错误。以下代码应该可以工作:
IList<SubGroup> SubGroupLit = mid.HasValue ? _subGroupService.GetAllWithGroupId(mid.Value) : _subGroupService.GetAll();
IList subclit=mid.HasValue_Subsubservice.GetAllWithGroupId(mid.Value):\u subsubservice.GetAll();
这个?
表示它可以为空。但是,您的GetAllWithGroupId
方法只接受int
。如果mid
恰好作为null
传递,则无法将其传递到该方法中,因为null
不是int
。因此出现了错误。您需要做的是将mid
变成一个int
,正如您已经提到的,它可以工作。或者您需要检查mid
是否有一个值,然后将该值传递给该方法。看起来您已经在尝试使用三元数,但是您犯了一些错误。以下代码应该可以工作:
IList<SubGroup> SubGroupLit = mid.HasValue ? _subGroupService.GetAllWithGroupId(mid.Value) : _subGroupService.GetAll();
IList subclit=mid.HasValue_Subsubservice.GetAllWithGroupId(mid.Value):\u subsubservice.GetAll();
int
和int?
是不同的类型,相似但不同,您不能自动从int?
强制转换为int
,因为系统不知道在null
的情况下该怎么办,您可以将其更改为\u subservice.GetAllWithGroupId(mid.Value)
int
和int?
是不同的类型,相似但不同,您不能自动从int?
转换为int
,因为系统不知道在null
的情况下该怎么办,您可以将其更改为\u subservice.GetAllWithGroupId(mid.Value)