您好我正在尝试使用HAML找到为某些标签创建别名的方法。
EG。 HAML足够灵活,可以获得此HAML标记:
%asp:TextBox#txtName/
呈现为
<asp:TextBox id="txtName" />
同时asp.net中的所有服务器端标签都需要
runat="server"
属性。
首先:我如何让HAML向我写这个必需的属性?
Seconde:是否愚蠢使用HAML来组织我的asp.net标签?
它不仅仅是关于runat =“server”属性,它更像是一个清晰有条理的路径来编写我的asp.net标记。
答案 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的任何语言替换。
另一个选择是使用部分。我使被调用的代码更好,但调用更糟糕。我倾向于从视野中隐藏丑陋。