我使用时方法不起作用?在int之后

时间:2015-05-08 19:26:02

标签: asp.net-mvc asp.net-mvc-5

我有这个Action方法:

public ActionResult Index(int? mid)
    {
        IList<SubGroup> SubGroupLit = (mid != null) ? _subGroupService.GetAllWithGroupId(mid) : _subGroupService.GetAll();
        return View(SubGroupLit);
    }

我得到了这个错误:

  

他最好重载方法匹配'ServiceLayer.Interfaces.ISubGroupService.GetAllWithGroupId(int)'有一些无效的参数

但是当我在?之后删除int(在Index参数中)时,它可以正常工作。

有什么问题?

1 个答案:

答案 0 :(得分:4)

?表示它可以为空。但是,您的GetAllWithGroupId方法只接受int。如果mid恰好以null形式出现,则无法将其传递到该方法,因为null不是int。因此错误。你要做的就是让mid只是int,正如你已经注意到的那样,mid有效。或者您需要检查IList<SubGroup> SubGroupLit = mid.HasValue ? _subGroupService.GetAllWithGroupId(mid.Value) : _subGroupService.GetAll(); 是否有值,然后将值传递给方法。看起来你已经尝试用三元组做到这一点,但是你犯了一些错误。以下代码应该有效:

{{1}}