我有一个Major
这样的模型:
public int Id { get; set; }
public string MajorName{ get; set; }
public string Password { get; set; }
public System.DateTime RegisterDate { get; set; }
public string StudentId { get; set; }
public string State { get; set; }
public int FacultyId { get; set; }
public int MajorId { get; set; }
public HttpPostedFileBase ImgFile { get; set; }
所以我在上面的模型库中有这样的方法:
public Major FindMajorById(int id)
{
return _dbcontext.Majors.Find(id);
}
在我看来,我通过了身份证,我需要专业名称:
<td>
@{
EducationRepositor.MajorRepository objmajor=new MajorRepository();
}
@Html.DisplayFor(objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)).MajorName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Degree)
</td>
但是我在这一行中看到了错误:
@Html.DisplayFor(objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)).MajorName)
我的错误:
参数类型lambda表达式不能赋值给参数类型int
答案 0 :(得分:5)
我怀疑你基本上得到了你的lambda表达式并且你的方法调用错误的方法。您可能想要:
@Html.DisplayFor(modelItem => objmajor.FindMajorById(int.Parse(modelItem.MajorId)).MajorName)
换句话说,您正在创建一个lambda表达式,它接受一个模型项,解析其MajorId
属性,调用FindMajorById
,然后使用结果的MajorName
属性。该lambda表达式用作DisplayFor
的参数。
我不是MVC专家(无论如何),所以不清楚lambda表达式提供了多少好处,但是 - 你是否真的可以直接调用该方法。
答案 1 :(得分:1)
您必须使用int.Parse(item.MajorId)
代替
modelItem => int.Parse(item.MajorId)
。
您收到的错误消息非常清楚,您尝试将lambda表达式作为参数传递给方法,该方法只接受一个int类型的参数。所以在DisplayFor
内
你必须使用
objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)
。
答案 2 :(得分:1)
FindMajorByID
期望int
值,并且您传递的是带有objmajor.FindMajorById(modelItem => int.Parse(item.MajorId)
的lambda表达式。
我相信你需要传递它MajorId
,如:
objmajor.FindMajorById(int.Parse(item.MajorId))
由于您的班级int.Parse
已被宣布为MajorId
,因此不确定您为什么要int
。如果您的模型指向另一个类,其中MajorId
为字符串,则使用int.Parse
否则您将收到编译错误。
答案 3 :(得分:1)
请尝试以下方法:
@Html.DisplayFor(modelItem => objmajor.FindMajorById(int.Parse(modelItem.MajorId)).MajorName)