3

我正在清理一些较旧的 C# 代码,并在Page_Load方法中遇到了这个块。

txtFirstName.Attributes.Add("onchange", "CheckChange();");
txtMiddleName.Attributes.Add("onchange", "CheckChange();");
txtLastName.Attributes.Add("onchange", "CheckChange();");
txtIdentifier.Attributes.Add("onchange", "CheckChange();");

保持原样或在 HTML 中设置这些特定属性会更有效吗?

4

4 回答 4

4

保持原样或在 HTML 中设置这些特定属性会更有效吗?

我认为这里的效率不那么重要,而且无论哪种方式,差异都可能非常小。

但是......我认为应该在客户端编写 HTML 属性,特别是 javascript 事件和代码。

当您在客户端编写客户端代码时,将关注点分开,您的代码更容易开发和维护。这是在新应用程序中使用 Asp.net-MVC 而 Asp.Net 几乎有 0 个新应用程序的原因之一。

于 2013-03-04T19:30:28.367 回答
3

我用这个 TextBox 创建了一个简单的页面

<asp:TextBox runat="server" ID="txtFirstName" onblur="CheckBlur()"></asp:TextBox>

在 PageLoad 我放置那行

txtFirstName.Attributes.Add("onchange", "CheckChange();");

现在,我去检查编译后的文件,发现编译器添加了这一行

#line 12 "D:\StackOverFlow\AttrTest.aspx"
((System.Web.UI.IAttributeAccessor)(@__ctrl)).SetAttribute("onblur", "CheckBlur()");

因此,编译器添加相同的行,就像你将它放在后面的代码上一样。所以从这个角度来看,结果似乎在速度或页面编译方面是相同的。

于 2013-03-04T19:36:01.320 回答
1

我宁愿在 aspx 页面中编写代码,并且会在不可能这样做的情况下选择代码隐藏,例如在提交页面后动态生成锚点并将一些 javascript 链接到它。它涉及可维护性而不是性能。

编辑

作为附加输入,请考虑在 javascript 中使用松散耦合的代码,而不是直接在标签上指定事件,例如

document.getElementById('txtLastName').onclick = function () { 
//code 
};
于 2013-03-04T19:30:58.333 回答
1

我想在 HTML 中设置它们会稍微更有效,因为 HTML 可以按原样写入输出,并且需要使用一些字符串连接和格式化操作将控件的对象模型转换为 HTML。

但总而言之,如果您没有数千个这样的属性,我认为这不会影响您页面的性能。

不过,我不能 100% 确定,因为我从未尝试过这样的微优化

于 2013-03-04T19:30:13.723 回答