我正在研究MVC,它向用户显示请求列表.该模型看起来像这样:
public class RequestModel 
{
    public string Status { get; set; }
}
控制器看起来像这样:
public ActionResult Index()
{
    return View(db.Requests.ToList());
}
我希望索引视图页面显示状态为"待定"的请求列表,我尝试使用以下代码:
<table class="table">
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @if (modelItem => item.Status == "Pending")
                {
                    @Html.DisplayFor(modelItem => item.Status)
                }
            </td>
        </tr>
    }
</table>
但是,这给了我以下错误:
无法将lambda表达式转换为"bool"类型,因为它不是委托类型.
我不确定这些错误意味着什么,以及如何解决它.如果有人有任何帮助或建议我会非常感激.
你的病情应该是这样的:
@if (item.Status == "Pending")
您正在尝试使用lambda表达式(modelItem => item.Status == "Pending"),您应该使用简单条件.
通过编写此代码,modelItem => item.Status == "Pending"您定义了一个函数:
Func<string,bool> someFunc = (str) => str == "Pending";
你会发现你的 if 语句看起来像下面这样,这意味着你有一个委托对象,而不是bool在 if 语句中进行评估。
if(someFunc) // causes compilation error
{
    // some code
}
请注意,它没有调用该函数并评估布尔结果,这将是:
if(someFunc(item.Status))
{
    // some code
}
要更正它,请删除modelItem =>
如果在视图中您始终希望项目具有“待处理”状态,请考虑将过滤逻辑移至控制器,但Where在返回的集合上添加一个子句。
| 归档时间: | 
 | 
| 查看次数: | 738 次 | 
| 最近记录: |