我已经能够创建一个循环页面列表的显示。这将显示 DB 表中的所有页面,如下所示。
@using (var page = ko.Foreach(m => m.PageList))
{
@page.Html.TextBox(p => p.PageErrorMessage)
@page.Html.TextBox(p => p.PageSuccessMessage)
@page.Html.TextBox(p => p.Title)
@page.Html.TextBox(p => p.Content)
}
我希望能够过滤由 Foreach 上的 lambda 表达式显示的内容。目前返回 IEnumerable 类型,即使最后使用 ToList(),以下内容也不起作用。
//Note: I have tried .Where pl.Title == "string" with the same results
@using (var page = ko.Foreach(m => m.PageList.Where(pl => pl.Title.Contains("Page01")))
{
@page.Html.TextBox(p => p.PageErrorMessage)
@page.Html.TextBox(p => p.PageSuccessMessage)
@page.Html.TextBox(p => p.Title)
@page.Html.TextBox(p => p.Content)
}
我可以得到我想要的结果,但是这样做似乎很麻烦。如果我使用相同的检查向每个字段添加可见检查,我只会看到我想要的字段。
//Note: p.Title.Contains("string") does not work for me in the Visible here
@using (var page = ko.Foreach(m => m.PageList))
{
@page.Html.TextBox(p => p.PageErrorMessage).Visible(p => p.Title == "Page01!")
@page.Html.TextBox(p => p.PageSuccessMessage).Visible(p => p.Title == "Page01!")
@page.Html.TextBox(p => p.Title).Visible(p => p.Title == "Page01!")
@page.Html.TextBox(p => p.Content).Visible(p => p.Title == "Page01!")
}
是否有更好的方法与 foreach 一起过滤列表,或者目前是否设计为始终返回完整集?