2012-07-06 86 views
0

我实际上是在我的project.i中使用过滤器将值传递给数据库中的id.For例如:如果学生名称there.i没有存储学生名称像“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> 

<% } %> 

回答

0

我想你想使用:

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

凡请将.Name在function.Name就是你叫你的用户名

编辑

根据您的评论:

如果您只将密钥列表发送到您的视图,那么您的names不可用于视图。您需要将您的实际模型发送到您的视图,而不是键 - 键只是键,它们不包含任何实际用户的名称。您应该将自己的逻辑移出视野以帮助促进这一过程。

+0

我不认为这将工作,因为该枚举是一个'选择'键 – 2012-07-06 11:49:38

+0

啊,你没有发送适当的信息到你的观点。您需要将您的实际模型发送到您的视图,而不是键 - 键只是键,它们不包含任何实际用户的名称。 – Ecnalyr 2012-07-06 11:51:54

0

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

要回答原始问题,这完全取决于函数的名称是否可用于您的Model。如果不是,那么你需要把它放在那里。

比方说,这是,这是可用的FunctionName属性,你可以这样做:

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

请注意,我也改变ToListToArray - 除非你要不要创建一个列表之后修改结果。

+0

必须在存储库文件中添加关于函数方法的信息。 – udhaya 2012-07-20 09:31:53

+0

是的 - 基本上从你的控制器的任何地方'下'的层次结构和*不*在您的看法。 不要误会我的意思 - 如果我正在建立一个网站或者其他什么样的原型,我会打破这个规则,但是对于任何可能最终会有一个生命周期的事情来说,尝试做到“正确”,这会节省你的时间长跑。 – 2012-07-20 10:53:19