2010-08-13 93 views
3

我有這個簡單的片段與一個ActionLink應該顯示一些文本作爲鏈接,但它不工作。Html.ActionLink不顯示任何東西

以下是代碼片段。

<div id = "Div1"> 
     <table id = "Table1"> 
      <% while ((category = SomeNamespace.Helper.GetNextCategory(categoryIndex++)) != null) 
       { %> 
       <tr> 
        <td class = "catalogCell"> 
         <% Html.ActionLink(category.Name, 
           "DisplayCategory", 
           "Catalog"); %> 
        </td> 
       </tr> 
      <% } %> 
     </table> 
    </div> 

回答

2

你需要一個等號(=):

<%= Html.ActionLink(category.Name, 
        "DisplayCategory", 
        "Catalog") %> 
+0

我也試過。但是當我這樣做時,它給了我一個例外,說:「)預計」。 – 2010-08-13 02:15:01

+0

聖牛,我又這樣做了,並在方法調用結束時刪除了分號,它工作正常。奇怪! – 2010-08-13 02:15:56

+0

對,我從我的例子中刪除了這個。 – RedFilter 2010-08-13 02:17:12

1

使用<%: ... %>風格,一定要卸下分號(;)在聲明的結尾。

+0

是的,我做到了。但爲什麼呢? – 2010-08-13 02:22:54

+1

哪部分? '<% ... %>'是'%= Server.HtmlEncode(...)%>'的簡寫,換句話說,從內到外,Html將這些數據編碼,然後將其寫入輸出。對於這個問題,這只是簡單的一點:'<%Response.Write(Server.HtmlEncode(...)); %>' 最後不需要分號(;),因爲據瞭解,如果您正在執行'<%= ... %>'或'<%: ... %>',那麼您實際上正在執行Response.Write(.. 。);'因此你可以免費得到分號。這真是個便宜貨!在您的一生中,這些關鍵衝程節省加起來。 – 2010-08-13 10:05:12