2016-11-22 44 views
0

您好我可以調用一個函數到我的視圖來獲取ID的描述在foreach呼叫功能眼簾剃刀

我的觀點

@if (Model != null) 
      { 
       int i = 1; 
       foreach (var item in Model) 
       { 
       <tr class=""> 
        <td class="left">@{ new Fullname().getfullname(item.student_id.value).ToString(); }</td> 
        <td class="left"></td> 
        <td class="left">@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(item.paid_month.Value).ToUpper()</td> 
        <td class="left">@item.monthly</td> 
        <td class="left">@item.transport</td> 
        <td class="left">@item.discount_details</td> 
        <td class="left">@item.total</td> 
       </tr> 
       } 
      } 
的全名類

public class Fullname 
{ 
    private dbEntities db = new dbEntities(); 
    public string getfullname(int? id) 
    { 
     var StudentSelect = db.student.Where(s => s.student_id == id) 
      .Select(s => new 
      { 
       FullName = s.lastname + " " + s.firstname 
      }); 


     return StudentSelect.FirstOrDefault().FullName; 
    } 
} 

我試圖從模型

中的@ item.student_id中獲取學生全名但沒有顯示

謝謝

+0

設置斷點,並檢查是否「dbEntities」是能夠連接到數據庫。另外,如果你想做的很好,可以考慮在前端使用javascriptt,而服務器端(C#)只能返回原始數據。 Razor很好,但過度使用會導致項目不可修復 – nilphilus

+0

原則上應該工作(如果您正確設置了數據庫連接)。更清潔和更快捷的方式是將「FullName」屬性添加到項目中,並在項目數據的其餘部分(即控制器中)加載時填充它。 –

+0

我在fullname上設置了一個斷點,但它在正確的位置返回,但是在視圖上沒有發生任何事情 我認爲我在視圖的調用函數中缺少某些東西 –

回答

2

問題是,您正確檢索完整名稱,但絕不會將其作爲字符串發送到呈現的視圖中。

使用@variableName語法發出一個C#變量的值作爲字符串:在「getfullname」的方法

@{ var fullname = new Fullname().getfullname(item.student_id.value).ToString(); } 
<td>@fullname</td> 
+0

感謝它的工作......... –

0

在MVC中,交互發生在模型與視圖之間,反之亦然。要在中間移動,我們需要發生一些事件,然後通過ajax或表單提交進行處理。在這裏,您試圖從某個控制器返回後引用一個類函數,這意味着沒有事件觸發,因此不會調用該函數,也不會返回任何數據。但仍然可以肯定,因爲你可以在你的功能上設置一個斷點,並檢查控制是否接近它。

+0

我不這是正確的。觸發渲染的事件在這種情況下已經發生(例如呈現View的Get請求)。當剃刀渲染視圖時,我們仍然在服務器端,原則上可以調用數據庫。 '@ {}'語法封裝了服務器端的c#代碼。 –

+0

@GeorgPatscheider ....感謝您爲我提供有用的信息。因爲你和El Hamza學到了新的東西。 – Sudhanshu