仅过滤名称

时间:2012-07-06 11:40:47

标签: asp.net-mvc-3

我实际上在我的project.i中使用过滤器。将值传递给数据库中的id.For例如:如果学生名称在那里。我没有存储学生名称,如“mala”。我传递的名称NameId如12,13etc。 ,我的问题是,当我过滤函数名称时,它没有正确过滤。它只显示Id.how我可以更改为名称吗?任何人请帮助我..我的代码在这里。

       <div class="section">
        <% var topFunctions = Model.GroupBy(q => q.FunctionId)
                               .OrderByDescending(gp => gp.Count())
                               .Take(5)
                               .Select(g => g.Key).ToList(); %>
        <h5>Function</h5>       

        <ul>
            <% foreach (var function in topFunctions)  { %>
                 <% var url = "http://localhost:55996/jb" + Djsite.Helpers.StringHelper.AssembleQueryStrings(filters) + "Fun=" + function; %>
                 <li><a href="<%: url %>"><%: function %></a></li>       
            <% } %>
        </ul>
    </div>

<% } %>

2 个答案:

答案 0 :(得分:0)

我想你想要使用:

<li><a href="<%: url %>"><%: function.Name %></a></li> 

function.Name中的.Name就是您所谓的用户名

修改

根据你的评论:

如果您只向视图发送密钥列表,则视图无法使用names。您需要将实际模型发送到视图,而不是键 - 键只是键,它们不包含任何实际用户的名称。您应该将逻辑移出视图以帮助促进此过程。

答案 1 :(得分:0)

首先,一个重要的咨询说明:您应该在控制器中进行此过滤,并将结果推送到专门为此类结果构建的模型类型中。我认为,这种逻辑将类视为业务逻辑,因此它不应该在您看来。

回答原始问题:这完全取决于您的Model中是否有该功能的名称。如果不是那么你需要把它拿到那里。

让我们说它是,并且可以使用FunctionName属性,您可以使用它:

Model.GroupBy(q => q.FunctionId)      
     .OrderByDescending(gp => gp.Count())      
     .Take(5)      
     .Select(g => g.First().FunctionName).ToArray();

请注意,我还将ToList更改为ToArray - 除非您之后需要修改结果,否则不要创建列表。