2010-07-06 49 views
3

我很困惑哪一个更好。使用asp Control总是更好吗?

ASPX:

<asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink> 

代码:

String url = "http://stackoverflow.com"; 
if(IsShow) 
{ 
    HyperLink1.Visible = true; 
    HyperLink1.NavigateUrl = url; 
} 

和第二个选项是:

<%if(IsShow){%> 
<a href="<%=url%>">HyperLink</a> 
<%}%> 

这两种方法可以做到完全一致。

哪一个更好,为什么?

回答

4

这主要是针对第一种是首选的可读性(虽然你贴的代码是无效的 - 你需要用它在脚本标签,并指定功能(即Page_Load中)做你的逻辑

其次,第二种方法在Page_PreRender上执行,所以在页面生命周期的后期执行逻辑会受到限制。在ASP.NET MVC中编程时(因为没有代码隐藏模型),您会注意到此方法。使用Web Forms中的第一种方法,ASP.NET MVC中的第二种方法。

+0

但是,如果我需要修改链接,第一个选项需要被编译。第二个选项不需要编译。这意味着我可以立即作出反应..不是吗? – 2010-07-06 11:55:18

+0

由于需要创建控件的实例,ASP.NET控件一般消耗更多的服务器资源。就个人而言,我避免使用ASP.NET控件或仅使用普通的HTML runat =“server”。 – airmanx86 2010-07-06 14:32:54

+0

它仍然需要编译。 “IsShow”和“url”属性是服务器属性。页面生命周期仍然会启动,这会导致所有页面属性被评估。在这个例子中,你不需要任何服务器代码。只需将URL和IsShow作为变量(使用RegisterClientSideScript)呈现给客户端,并在常规的HTML定位标记中使用它们即可。 – RPM1984 2010-07-07 01:00:50

相关问题