我有一个派生自Person
的Employee
类。我将它们列在索引页上:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("Details", "Details", new { id=item.Id })
</td>
</tr>
}
如何检查此循环内的 item 是否为 Employee
xor Person
?
例如:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@if(**item is Employee**){
@Html.ActionLink("Details", "Details", "EmployeeController", new { id = item.Id},null)
}else{
@Html.ActionLink("Details", "Details","PersonController", new { id=item.Id }, null)
}
</td>
</tr>
}
最佳答案
这应该可以解决问题:
@if (item.GetType().BaseType == typeof(Employee))
{
//item is of type Employee
}
更新:我可能误读了您的“如何检查此循环内的项目是否是 Employee xor Person?”问题。
根据定义,XOR
必须测试这两个值。为什么你需要这样做?如果一个对象是一个Employee
,那么他(根据您的定义)也是一个Person
。您的 “如果他是 Employee,将其传递给 EmployeeController。否则,将其传递给 PersonController”
应该可以工作,因为它正在评估 item
是否是 Employee
首先(反之亦然会出现问题)。
用于测试一方与双方的逻辑和条件运算符是:
&
(逻辑 AND
)将测试这两个值&&
(条件 AND
)将测试第二个值iff
第一个值为true
|
(逻辑或
)将测试这两个值||
(条件 OR
)将测试第二个值iff
第一个值为false
<
关于asp.net-mvc - 如何检查 Razor View 中对象的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450487/