我的MVC网站运行正常,它从EF读取数据并在页面上显示。我现在必须添加一个“优化搜索”部分,客户可以在其中过滤结果...
我有一种可怕的感觉我的方法是错的,如果是的话,请告诉我!
我的模型看起来像
using bconn.bll;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace bconn.ui.Models
{
public class BoardToBoard
{
private bconnEntities _dataContext = new bconnEntities();
public IEnumerable<bll.BoardToBoard> BoardToBoardConnectors
{
set { }
get
{
return _dataContext.BoardToBoards.ToList();
}
}
public IEnumerable<bll.BoardToBoard> BoardToBoardSearch
{
get{}
}
}
}
我的观点:
@model bconn.ui.Models.BoardToBoard
@{
ViewBag.Title = "Test";
}
<table>
@foreach (var item in Model.BoardToBoardConnectors) {
<tr>
<td>
@Html.DisplayTextFor(Model.BoardToBoardConnectors.Select(a=> a.Gender)) //FAULT
</td>
</tr>
}
</table>
我遇到的问题是DisplayTextFor需要System.Linq.Expressions.Expression<System.Func<BoardToBoard,TResult>>)
问题是,我没有使用类(BoardToBoard),我只使用BoardToBoard(BoardToBoardConnector)的属性,如foreach语句中所示。
如何将DispalyTextFor用作类的属性?我想我很想念MVC的要求吗?
答案 0 :(得分:1)
您需要DisplayTextFor吗?你能做这样的事吗?
@foreach (var item in Model.BoardToBoardConnectors) {
<tr>
<td>
item.Gender
</td>
</tr>
}
或者这个:
@for(int i = 0; i < Model.BoardToBoardConnectors.Count; i++ )
{
<tr>
<td>
@Html.DisplayTextFor(m=>m.BoardToBoardConnectors[i].Gender)
</td>
</tr>
}
答案 1 :(得分:1)
这就是我要去的方式:
@foreach (var item in Model.BoardToBoardConnectors) {
<tr>
<td>
@Html.DisplayTextFor(m => item.Gender)
</td>
</tr>
}
您可以将DisplayTextFor
用于数据注释格式标记,语法将接近您曾经使用的Model
属性(@Html.DisplayTextFor(m => m.Title)
)。