在HAML中创建标记别名

时间:2013-08-06 01:39:10

标签: asp.net webforms haml

您好我正在尝试使用HAML找到为某些标签创建别名的方法。

EG。 HAML足够灵活,可以获得此HAML标记:

%asp:TextBox#txtName/

呈现为

<asp:TextBox id="txtName" />

同时asp.net中的所有服务器端标签都需要

runat="server" 

属性。

首先:我如何让HAML向我写这个必需的属性?

Seconde:是否愚蠢使用HAML来组织我的asp.net标签?

它不仅仅是关于runat =“server”属性,它更像是一个清晰有条理的路径来编写我的asp.net标记。

1 个答案:

答案 0 :(得分:0)

我会使用辅助方法。在红宝石中它会是这样的:

def asp_tag attrs_hash={}
  result = '<asp:TextBox '
  result << 'runat="server" '
  attrs_hash.each {|k,v| result << "#{k}=\"#{v}\"" }
  result << '>'
  result << yield # not necessary if you never have a body in your tag
  result << '</asp:TextBox>'
  result.html_safe # in rails anyways.....
end

并在您的视图中使用它:

= asp_tag{id: 'txtName'}
  .moreStuff
    teh awesome

应该渲染

<asp:TextBox id="txtName" runat="server">
  <div class="moreStuff>
    teh awesome
  </div>
</asp:TextBox>

由于您处于微软环境中,部分或大部分可能会或可能不会起作用。 ruby方法可以用你运行haml的任何语言替换。

另一个选择是使用部分。我使被调用的代码更好,但调用更糟糕。我倾向于从视野中隐藏丑陋。