这样做有什么不同:
<a href="<%=this.GetUserProfilePermalink()%>"><%=this.GetUsername()%></a>
和此:
<a id="hlUser" runat="server"></a>
代码隐藏中的:
hlUser.HRef = GetUserProfilePermalink();
hlUser.InnerText = GetUsername();
我注意到我的代码隐藏更容易读取,因为我把所有的东西都转移到了标记,但是如果我错过某个地方很难找到错误,因为“文字中的字符太多”错误。有什么区别,什么是这样做的好方法是什么?
答案 0 :(得分:1)
其中一个不同之处在于ViewState用法:
假设您的.GetUserProfilePermalink()是一项代价高昂的操作,使用第一种方法,您必须在每次回发时运行它。
使用第二种方法和活动视图状态,您将只能运行.GetUserProfilePermalink()一次,并且该值将存储在视图状态中(虽然以带宽为代价)并显示在每个回发上。
此外,在项目编译期间不会检查标记中的代码。从长远来看,这是代码重构的一个问题。
答案 1 :(得分:0)
使用第二种方法,您将在服务器上创建一个Hyperlink对象,在其上设置一些属性,然后当页面处于Rendering状态时,它将使用该对象以HTML格式呈现超链接。
使用第一种方法,您只需使用Response对象发出字符串,服务器上就没有创建超链接对象。
即使第一种方法通常更轻,第二种方法也有很多优点。例如,因为服务器上有一个渲染自身的对象,它可以知道它当前正在将它自己渲染到哪个浏览器,并为不同的浏览器使用不同的渲染技术,因此它可以在任何地方使用。