【问题标题】:Create tag alias in HAML在 HAML 中创建标签别名
【发布时间】:2013-08-06 01:39:10
【问题描述】:

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

例如。 HAML 足够灵活,可以获取此 HAML 标记:

%asp:TextBox#txtName/

渲染为

<asp:TextBox id="txtName" />

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

runat="server" 

属性。

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

第二点:使用 HAML 用 asp.net 标签组织我的直播是愚蠢的吗?

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

【问题讨论】:

  • 您只是在寻找如何添加属性:%asp:TextBox#txtName{:runat =&gt; 'server'}/
  • 嗨,马特,我正在寻找一种方法来进行一些配置,使 HAML 识别以 %asp 为前缀的标记:必须始终呈现 runat="server" 属性。

标签: asp.net webforms haml


【解决方案1】:

我会使用辅助方法。在 ruby​​ 中,它会是这样的:

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 的任何语言替换。

另一种选择是使用部分。我使被调用的代码更好,但调用更糟。我喜欢隐藏丑陋的东西。

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多