【问题标题】:How to use my a property as a model如何使用我的财产作为模型
【发布时间】:2014-02-24 19:47:49
【问题描述】:

我的 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&lt;System.Func&lt;BoardToBoard,TResult&gt;&gt;)

问题是,我没有使用类(BoardToBoard),我只使用了BoardToBoard的一个属性(BoardToBoardConnector),如foreach语句所示。

如何将 DispalyTextFor 用于类的属性?我假设我错过了理解 MVC 的要求?

【问题讨论】:

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


    【解决方案1】:

    这就是我的方式:

    @foreach (var item in Model.BoardToBoardConnectors) {
        <tr>
            <td>
                @Html.DisplayTextFor(m => item.Gender)
            </td>
        </tr>
    }    
    

    您可以将DisplayTextFor 用于DataAnnotation 格式,并且sintax 将接近您以前使用的Model (@Html.DisplayTextFor(m =&gt; m.Title)) 的属性。

    【讨论】:

    • 您必须输入(m =&gt; item. 才能访问它们的item 属性。
    【解决方案2】:

    您需要 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>
    }    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多