C# 区别在于将属性指定给元素还是将其直接放在标记中
这样做的区别是什么:C# 区别在于将属性指定给元素还是将其直接放在标记中,c#,asp.net,C#,Asp.net,这样做的区别是什么: <a href="<%=this.GetUserProfilePermalink()%>"><%=this.GetUsername()%></a> 我注意到我的codebehind在第一种方式下更具可读性,因为我将所有的assinging都移到了markup上,但是如果我在某个地方漏掉了一些东西,由于“文字中的字符太多”错误,很难找到错误。区别是什么,最好的方式是什么?第二种方式,您将在服务器上创建一个超链接对象,对其设置一
<a href="<%=this.GetUserProfilePermalink()%>"><%=this.GetUsername()%></a>
我注意到我的codebehind在第一种方式下更具可读性,因为我将所有的assinging都移到了markup上,但是如果我在某个地方漏掉了一些东西,由于“文字中的字符太多”错误,很难找到错误。区别是什么,最好的方式是什么?第二种方式,您将在服务器上创建一个超链接对象,对其设置一些属性,然后当页面处于呈现状态时,它将使用该对象以HTML呈现超链接 使用第一种方法,只需使用响应对象发出字符串,服务器上没有创建超链接对象
即使第一种方法通常更轻,第二种方法也有很多优点。例如,由于您在服务器上有一个对象进行自我渲染,因此它可以知道当前正在向哪个浏览器进行自我渲染,并对不同的浏览器使用不同的渲染技术,因此它可以在任何地方工作。第二种方法是,您将在服务器上创建一个超链接对象,对其设置一些属性,然后当页面处于呈现状态时,它将使用该对象以HTML呈现超链接 使用第一种方法,只需使用响应对象发出字符串,服务器上没有创建超链接对象
即使第一种方法通常更轻,第二种方法也有很多优点。例如,由于服务器上有一个对象可以进行自我渲染,因此它可以知道当前正在向哪个浏览器进行自我渲染,并对不同的浏览器使用不同的渲染技术,因此它可以在任何地方工作。其中一个不同之处在于ViewState的使用: 假设.GetUserProfilePermalink()是一个代价高昂的操作,对于第一个方法,您必须在每次回发时运行它 使用第二个方法和活动的viewstate,您将能够只运行一次.GetUserProfilePermalink(),并且该值将存储在viewstate中(但要以bandwith为代价),并在每次回发时显示
此外,在项目编译期间不会检查标记中的代码。从长远来看,代码重构是一个问题。其中一个区别在于ViewState的使用: 假设.GetUserProfilePermalink()是一个代价高昂的操作,对于第一个方法,您必须在每次回发时运行它 使用第二个方法和活动的viewstate,您将能够只运行一次.GetUserProfilePermalink(),并且该值将存储在viewstate中(但要以bandwith为代价),并在每次回发时显示
此外,在项目编译期间不会检查标记中的代码。从长远来看,这是代码重构的一个问题。谢谢你的回复,你能解释一下吗?“.并对不同的浏览器使用不同的渲染技术,所以它在任何地方都能工作。”我不太明白你的意思。谢谢你的回复,你能解释一下吗我不太明白你的意思。
<a id="hlUser" runat="server"></a>
hlUser.HRef = GetUserProfilePermalink();
hlUser.InnerText = GetUsername();