ASP.NET中的ID命名规范是什么?

4

如果您来自HTML、XML和PHP的世界,使用ASP.NET制作Web应用程序是一种全新的思考方式。我想在我的MasterPage中使用以下代码:

<div id="leftnav">
    <asp:ContentPlaceHolder ID="leftnav" runat="server">
    </asp:ContentPlaceHolder>
</div>

但是由于此示例中leftnav被使用两次,因此Visual Studio会发出一次小的但明显的警告。在这种情况下我应该如何思考,并且在ASP.NET中命名ID的使用方式哪个最合适。

我不喜欢默认的命名方式,因为id="ContentPlaceHolder1"并没有说明内容。

谢谢聆听!


你真的需要给 div 加上 ID 吗? 顺便说一下,我更喜欢给控件加上一个能够反映其类型的 ID,例如 DivLeftNav、CphLeftNav 或 TxtLeftNav。 - Tim Schmelter
4
鉴于问题,我们能否假设OP需要它的原因...毕竟,需要身份证明并不罕见。 - David Hedlund
总的想法是制作一个简单的页面样式,因此使用leftnav作为我的样式表的参考,其中#leftnav { float: left; width: 190px; }和#content { margin-left: 200px; }。也许我在这里的想法都错了,因为我对ASP还很陌生 :) - Benny Skogberg
@Tim Schmelter:如果包含类型的ID后来变成SPAN,看起来会很奇怪... - cjk
@ck:我们应该在多大程度上未雨绸缪我们的代码呢?我完全同意丹尼尔·戴森的回答,因为那是完全不同的问题,但是我们能否说这里也是同样的情况呢?如果一个ID 描述元素的功能,那么如果我们改变了它的功能,它将会误导人。当然,在某种程度上,我们必须愿意跟进我们所做的代码更改,并进行进一步的代码更改。 - David Hedlund
6个回答

8

我会将div命名为“nav”,而将占位符命名为“navPlaceholder”。这是因为单词“left”暗示了位置,应该仅由您的css处理,而不是html。如果设计人员决定将导航放在右侧怎么办?您可以在css中实现此操作,但最终会得到像div #lefnav { float:right; }这样令人困惑的东西,这只是一个微不足道的例子,但需要牢记。


1
一个明智的方法。将我们的关注点分离,加1。 - David Hedlund
谢谢Daniel。我已经将名称更改为globalNav、localNav和supplementNav,以更好地描述其内容,而不是样式或位置。此致。 - Benny Skogberg

3

"leftNavPlaceHolder"怎么样?

只要您在命名惯例方面保持一致就可以。


2
不,预设的ID很糟糕。我无法想象它们是用来使用的,只是Visual Studio不够智能,无法建议更好的内容,而且他们也没有建议半智能的内容,因为他们不想试图扮演他们不是的角色。合理 =)
所以养成一个习惯,始终更改默认ID。你更改它们的方式完全取决于你;“leftNavContent”?在涉及到ID时,几乎唯一需要考虑的是大小写规范。
唯一真正需要从纯HTML中更改的是,您不能像“left-navigation”这样使用包含连字符的ID,即对于服务器控件。

+1 对于“养成始终更改默认ID的习惯”。它们是无意义的,并使任何客户端脚本难以理解。 - Daniel Dyson

1

主观的。对于这种问题显而易见的答案是:选择你喜欢的东西;将其标准化,并始终遵循它。

就我个人而言,我按照以下方式命名我的事物:

<asp:Literal runat="server" ID="ltlDescriptionOfContent" />

或者

<asp:PlaceHolder runat="server" ID="plhSendMessage">
</asp:PlaceHolder>

对于一个包含有关发送消息的信息区域,但您不必这样做。做任何您想做的事情。只需使其保持一致即可。最好能够传达一些关于其中内容的信息。


这是一种很好的思考方式,就像普通的C#命名约定。我只是认为有一个简单的命名约定被大家普遍使用。谢谢你的回答。 - Benny Skogberg
这也是非常明智的建议。 - Daniel Dyson

1
我建议,除非你真的需要,否则不要给 div 分配 id,因为这会影响性能。

发送到客户端的11个额外字符?请注意,DIV不是runat="server"。OP谈论的是设计师中的小但明显的抗议,而不是编译错误=) - David Hedlund
我正在讨论整个HTML控件ID,而不是单个ID。 - Muhammad Akhtar
我认为如果你的页面上有很多HTML,并且有不必要的ID,这将对性能产生影响,尽管只是轻微的影响。 - Muhammad Akhtar

1

我把所有的ASP.Net控件都以ux作为前缀,表示用户控件。

然后,你可以将String emailAddress = "test@abc.com";连接到uxEmailAddress.Text = emailAddress中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接