Asp.net mvc 使用ASP MVC3 Html.DisplayFor控件中的条件

Asp.net mvc 使用ASP MVC3 Html.DisplayFor控件中的条件,asp.net-mvc,string,asp.net-mvc-3,linq,where,Asp.net Mvc,String,Asp.net Mvc 3,Linq,Where,是否有方法在ASP MVC3@Html.DisplayFor()控件中使用条件?下面是我尝试的语法。虽然看起来合作伙伴。TradingPartners能够使用。Where,但根据Visual Studio,我做错了 下面是我使用的语法 @foreach (var item in Model.Agent.SymNumberToAgentId) { var gogo = ViewBag.Periscope + item.AgentId.Trim

是否有方法在ASP MVC3
@Html.DisplayFor()
控件中使用条件?下面是我尝试的语法。虽然看起来
合作伙伴。TradingPartners
能够使用
。Where
,但根据Visual Studio,我做错了

下面是我使用的语法

        @foreach (var item in Model.Agent.SymNumberToAgentId)
        {
            var gogo = ViewBag.Periscope + item.AgentId.Trim();
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.DisplayAgentId)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.CompanyCode)
                </td>
                <td>
                    @foreach (var partner in Model.AgentIdDetails)
                    {
                        @Html.DisplayFor(modelItem => partner.TradingPartners.Where(item => item.AgentId == partner.AgentId))
                    }
                </td>
                <td>
                    @Html.ActionLink("Remove", "Delete", "SymetraNumberToAgentId", new { id = item.SymetraNumber, aid=item.AgentId}, null)
                </td>
                <td>
                    <a href=@gogo target="_blank">View in Periscope</a>
                </td>
            </tr>
        }
@foreach(Model.Agent.SymNumberToAgentId中的变量项)
{
var gogo=ViewBag.Periscope+item.AgentId.Trim();
@DisplayFor(modelItem=>item.DisplayAgentId)
@DisplayFor(modelItem=>item.CompanyCode)
@foreach(Model.agentId详细信息中的var合作伙伴)
{
@DisplayFor(modelItem=>partner.TradingPartners.Where(item=>item.AgentId==partner.AgentId))
}
@ActionLink(“删除”、“删除”、“SymetraNumberToAgentId”、新建{id=item.SymetraNumber,aid=item.AgentId},null)
}
下面是错误消息

CS1928:'System.Collections.Generic.IList'不包含
“Where”和最佳扩展方法重载的定义
'System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,
System.Func“”有一些无效参数


编辑:问题更新后(foreach内部代码):


您需要在where子句中使用正确的语法。此外,您还应该为过滤后的交易伙伴指定属性

<td>
    @foreach (var partner in Model.AgentIdDetails)
    {
        @Html.DisplayFor(modelItem => partner.TradingPartners.Where(item => item.AgentId == partner.AgentId).XYZProperty)
    }
</td>

@foreach(Model.agentId详细信息中的var合作伙伴)
{
@DisplayFor(modelItem=>partner.TradingPartners.Where(item=>item.AgentId==partner.AgentId.XYZProperty)
}

编辑:问题更新后(foreach中的代码):


您需要在where子句中使用正确的语法。此外,您还应该为过滤后的交易伙伴指定属性

<td>
    @foreach (var partner in Model.AgentIdDetails)
    {
        @Html.DisplayFor(modelItem => partner.TradingPartners.Where(item => item.AgentId == partner.AgentId).XYZProperty)
    }
</td>

@foreach(Model.agentId详细信息中的var合作伙伴)
{
@DisplayFor(modelItem=>partner.TradingPartners.Where(item=>item.AgentId==partner.AgentId.XYZProperty)
}

在控制器中筛选此列表要干净得多在控制器中筛选此列表要干净得多删除我的答案,你比我快。但我仍然认为考虑“四十二”所说的是有效的。这可能最好在控制器中完成。正确。最佳做法是在控制器中执行此操作+1到@42对不起,我应该更清楚地描述代码。这是在一个
foreach
loopUgh。。编辑的答案导致以下错误消息:
“string”不包含“AgentId”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“AgentId”(是否缺少using指令或程序集引用?)
我认为问题在于
TradingPartners
列表中没有
AgentId
属性。删除我的答案,你比我抢先一步。但我仍然认为考虑“四十二”所说的是有效的。这可能最好在控制器中完成。正确。最佳做法是在控制器中执行此操作+1到@42对不起,我应该更清楚地描述代码。这是在一个
foreach
loopUgh。。编辑的答案导致以下错误消息:
“string”不包含“AgentId”的定义,并且找不到接受“string”类型的第一个参数的扩展方法“AgentId”(是否缺少using指令或程序集引用?)
我认为问题在于
TradingPartners
列表中没有
AgentId
属性。