2012-01-21 52 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,考虑派遣你的数据从控制器查看使用自定义模型。