Asp.net 生成具有文字和string.Format的干净标记

Asp.net 生成具有文字和string.Format的干净标记,asp.net,markup,literals,Asp.net,Markup,Literals,为了生成干净的标记,我经常使用类似以下代码: <asp:Literal ID="ltItem" runat="server"> <li class="{0}"><a href="{1}">{2}</a></li></asp:Literal> 其中一些优点是: 干净的html标记,没有ASP.Net Web表单id等 设计器可以在aspx中进行小的修改,而无需开发人员干预 代码是预编译的(与使用内联代码或数据绑定语句相反)

为了生成干净的标记,我经常使用类似以下代码:

<asp:Literal ID="ltItem" runat="server">
<li class="{0}"><a href="{1}">{2}</a></li></asp:Literal>
其中一些优点是:

  • 干净的html标记,没有ASP.Net Web表单id等
  • 设计器可以在aspx中进行小的修改,而无需开发人员干预
  • 代码是预编译的(与使用内联代码或数据绑定语句相反)
缺点:

  • 有点神秘
  • 易碎-删除标记中的参数时,string.Format会引发异常
因此,我的问题是:


这是生成干净标记的常用方法吗?有更好的选择吗?数据绑定语法方法更可取吗?

看来您正在与您的框架作斗争。ASP.NET web表单设计用于自动解析客户端ID,并允许基于属性的UI自定义,就像Windows表单一样。这些特性通常会将呈现的HTML弄得一团糟,但由于其可感知的好处,结果是可以容忍的

如果你没有意识到自己的好处,发现自己在与ASP.NET Web窗体方法作战,那么考虑另一个框架。使用不共享您的价值观和目标的框架是没有意义的

如果你想完全控制你渲染的HTML,考虑一下。控制HTML输出是它的既定目标之一。此外,它还设计用于强制分离关注点

如果您对非Microsoft框架开放,则有许多可用的框架,包括:

  • -受Ruby on Rails启发的框架
  • -Java的Maverick框架的.NET端口

    • 如果我错了,请纠正我,但使用MVC不会给您提供预编译代码,不是吗? 我在使用webforms时也这样做,但我在使用webforms时遇到了一些问题

      ...
      lt.Text = string.Format(lt.Text,
          cssClass,
          item.Url,
          Server.HtmlEncode(item.Caption)
      );