2010-06-02 19 views
2

为了产生清洁的标记,我常常求助于使用类似这样的代码:生成清洁标记用文字和的String.format

<asp:Literal ID="ltItem" runat="server"> 
<li class="{0}"><a href="{1}">{2}</a></li></asp:Literal> 

而在代码隐藏:

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

一些其优点是:

  • 干净的HTML标记,没有ASP.Net Web窗体的id等
  • 设计师可以做的ASPX稍作修改而无需开发人员的干预
  • 代码是预编译的(而不是使用内嵌代码或数据绑定语句)

缺点:

  • 略带神秘
  • 脆弱 - 当标记中删除参数时,string.Format会抛出异常

Th因此,我的问题:

这是一种常见的方式来产生干净的标记? 更好的替代品?数据绑定语法的方法是否可取?

回答

2

看来你正在与你的框架战斗。 ASP.NET Web表单被设计为自动解析客户端ID并允许感觉像Windows窗体一样的基于属性的UI自定义。这些功能通常会使HTML呈现乱七八糟,但由于可感知的好处,结果是可以容忍的。

如果您不觉得好处,并发现自己与ASP.NET Web表单方法对抗,请考虑另一个框架。使用不共享您的价值观和目标的框架是没有意义的。

如果要完全控制呈现的HTML,请考虑ASP.NET MVC。 HTML输出的控制是其规定的目标之一。此外,它旨在强化顾虑的分离。

如果你打开一个非微软的框架,有许多可用的包括:

0

纠正我,如果我错了,但使用MVC不会给你预编译的代码是不是? 我在使用webforms时也是这样,我有几个问题。