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)