2014-07-21 64 views
1

問題創建方法解決:我發現了一個可重複使用的解決方案。感謝大家的幫助。使用C#在ASP.NET中使用剃刀語法

我很沮喪,不知道我在做什麼。我試圖建立一個網頁,我正在嘗試做的事情之一是削減代碼。爲了做到這一點,我需要創建一個方法,我廣泛地瞭解Java的方法,但不是在嘗試使用Razor語法在ASP.NET中編寫C#時。我面臨的問題是我的@helper拒絕訪問全局哈希表「dictionary」。我嘗試了很多不同的東西,並決定轉向使用stackoverflow尋求幫助。提前致謝。

更新:

錯誤消息是「CS0103:名稱‘字典’不在當前情況下存在」

我需要一個哈希表,因爲我從數據庫中提取,檢查,看看是否它的null,如果是的話,用一個空字符串替換它,然後將它推到一個表。所以,如果我能以這種方式學會如何做到這一點,那麼我認爲最好呢?

<!doctype html> 

@using System; 
@using System.Collections.Generic; 
@using System.Collections; 
@using System.Linq; 

@{ 
    var dictionary = new Dictionary<string, object>(); 

    dictionary.Add("fName", returnString100.FRSTNAME.Trim()); 

    @helper printOut(string toBePrinted) { 
     object curValue; 
     if(dictionary.TryGetValue(toBePrinted, out curValue)) { 
      return curValue; 
     } 
    } 
} 

<table> 
    <tr> 
     <td>First Name:</td><td>@{ printOut("fName"); }</td> 
    </tr> 
</table> 
+0

聽起來像這樣的邏輯不無論如何,都屬於你的觀點或幫手。爲什麼不在輔助方法中聲明你的字典? – CodeCaster

+1

這看起來像一個視圖太多的代碼。這應該屬於模型,視圖只會引用該模型的屬性。 – David

+0

請發佈您從此代碼中獲得的錯誤。 –

回答

1

儘管哲學我與你可能想在一個類來封裝此同意其他人,這裏是你如何能以期做到這一點的剃刀:

<!doctype html> 

@using System; 
@using System.Collections.Generic; 
@using System.Collections; 
@using System.Linq; 

@{ 
    var dictionary = new Dictionary<string, object>(); 

    dictionary.Add("fName", returnString100.FRSTNAME.Trim()); 

    Func<string, object> PrintOut = delegate(string toBePrinted) 
    { 
     object curValue; 
     if (dictionary.TryGetValue(toBePrinted, out curValue)) 
      return curValue; 
     return ""; 
    }; 

} 

<table> 
    <tr> 
     <td>First Name:</td><td>@PrintOut("fName").ToString()</td> 
    </tr> 
</table> 
+1

但是,我不知道你從哪裏得到returnString100。我會留給你,因爲這不是問題的一部分:) –

+0

是否有可能跳過所有這些,直接從哈希表中拉出來。示例dictionary.TryGetValue(「fName」)。ToString()? – user3704498

+0

此外,我不明白答案如何讓我重用代碼,因爲沒有涉及參數。我拉單個名稱,因爲它是按用戶顯示的,所以需要將此用於多個字段 – user3704498