2012-01-21 51 views
2

我有Razor語法和jQuery的問題,我試圖追加一些項目到一個空表。 下面的代碼剃刀和jQuery,附加表

 @{ 
      if (@ViewData["a"] != null) 
      { 
       var tab = @ViewData["a"] as List<string>; 
       foreach(var sp in @tab) 
       { 
        <text> 
         $('#files-table').append(@Html.Raw(@sp)); 
        </text> 
       } 
      } 
     } 

@sp變量是喜歡(我在這裏已經格式化的話):

<tr> 
    <td> 
     <a class='some-class' my-type='abc' my-id='1' 
      target='_blank' href='/Home/a'>name123</a> 
    </td> 
    <td> 
     <label class='del' f-id='abc'>lorem</label> 
    </td> 
</tr> 

表仍然是空的。我已經嘗試了很多選項,例如.append('@Html.Raw(@sp)').append(@Html.Raw(sp))等,但沒有成功

+0

生成的HTML看起來像什麼?另外,你是否在執行期間收到任何JS錯誤? – bzlm

+0

結果是沒有任何「」行的空表。我沒有得到任何錯誤使用該代碼 – Tony

回答

3

@應該只用於在HTML和代碼之間進行轉換。否則,當你在一個或另一個你不需要它。隨着中說,試試這個:

@if (ViewData["a"] != null) 
{ 
    var tab = (List<String>)ViewData["a"]; 
    foreach (var sp in tab) 
    { 
    <text> 
     $('#files-table').append('@Html.Raw(sp)'); 
    </text> 
    } 
} 

Screenshot http://img849.imageshack.us/img849/3250/razordemo.png

請注意,我還加括號的Html.Raw結果。您可能需要採取更多措施來安全保護sp中沒有可能會影響包裝報價的報價。

但我必須問,如果你有數據預先提交併能夠呈現爲什麼你將它交給客戶端渲染(更容易出錯並創建延遲和依賴關係)而不是自己渲染它?它看起來效率不高...

+0

使用該代碼我得到錯誤'缺少)參數列表後'因爲HTML代碼不被視爲字符串? – Tony

+0

@Tony:更新我的答案,我沒有得到任何解析錯誤。可能還有其他問題嗎? Razor在IDE中應該給你提供背景,表明代碼和HTML已經被正確解析。 –

1

你爲什麼要在控制器中建立你的行? 嘗試返回對象的列表,你想顯示你的桌子上,然後生成HTML表格在這樣的視圖中的數據:也

@if (ViewData["a"] != null) 
{ 
    var list = (List<YourObject>)ViewData["a"]; 
    foreach (YourObject item in list) 
    { 
     <tr> 
     <td> 
      <a class='some-class' my-type='abc' my-id='1' target='_blank' href='/Home/a'>@item.name</a> 
     </td> 
     <td> 
      <label class='del' f-id='abc'>@item.phone</label> 
     </td> 
     </tr> 
    } 

} 

,而不是使用的ViewData,考慮派遣你的數據從控制器查看使用自定義模型。