如何使用我的属性作为模型

时间:2014-02-24 19:47:49

标签: c# entity-framework asp.net-mvc-4

我的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的要求吗?

2 个答案:

答案 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))。