2

为了生成干净的标记,我经常求助于使用类似这样的代码:

<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 WebForm id 等
  • 设计人员可以在 aspx 中进行微小的修改,而无需开发人员干预
  • 代码是预编译的(而不是使用内联代码或数据绑定语句)

缺点:

  • 有点神秘
  • 脆弱 - 当在标记中删除参数时,string.Format 会引发异常

因此我的问题:

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

4

2 回答 2

2

看来你正在与你的框架作斗争。ASP.NET Web 表单旨在自动解析客户端 ID,并允许基于属性的 UI 自定义,感觉就像 Windows 表单。这些功能通常会使呈现的 HTML 变得一团糟,但由于感知到的好处,结果是可以容忍的。

如果您没有察觉到好处并且发现自己在与 ASP.NET Web 表单方法作斗争,请考虑使用另一个框架。使用与您的价值观和目标不同的框架是没有意义的。

如果您想完全控制呈现的 HTML,请考虑ASP.NET MVC。控制 HTML 输出是其既定目标之一。此外,它旨在强制执行关注点分离。

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

  • MonoRail - 一个受 Ruby on Rails 启发的框架
  • Maverick.NET - Java 的 Maverick 框架的 .NET 端口
于 2010-06-02T16:16:11.777 回答
0

如果我错了,请纠正我,但使用 MVC 不会给你预编译代码,不是吗?我在使用网络表单时也会这样做,但我遇到了几个问题。

于 2011-08-10T11:10:24.213 回答