2012-07-06 84 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