0

情况:我已经使用 Sublime 2 文本编辑器在 HTML5/CSS3 和 Javascript 中创建网页一年了,但是现在大学课程要求我使用 Asp.Net 和 Visual Studio 2010。我不使用设计器,因为我精通手工操作,但是我发现在每个元素中编写asp:非常耗时,并且在应用于某些 HTML 5 标记而不是其他标记时会导致语法错误。

示例 HTML 5: <button id="btn" type="submit" value="Button"/>

示例 Asp.net: <asp:Button ID="Button1" runat="server" Text="Button" />

问题:可以省略 asp: 部分而不影响任何内容,还是 IIS 或 C# 后端功能需要它?那 runat="server" 可以省略吗?谷歌已经对我的询问提出了质疑,因此我们不胜感激。

4

2 回答 2

1

您根本无法删除两者中的任何一个,但请听我解释原因,因为我感觉您不熟悉 ASP,因此误解了 theasp:runat="server"语法的含义。

first:runat="server" 一个元素上的这个属性,告诉编译器这实际上是一个服务端控件所以a<button/>和an不一样<button runat="server"/> 第一个是纯html,而第二个是控件,可以绑定到服务器端。.Net 会给它一个 clientID(不要被你自己给它的 ID 弄错了)。

第二:asp: 这是某些元素上的前缀,它告诉编译器这些是 ASP 控件(由 ASP.net 框架提供的默认控件)。其中包括 Buttons、TextBoxes、DropDownLists ……不要将其中 1 个与 html 元素混淆。

an<asp:Button id="myAspButton" runat="server"/> 与 a 不同<button id="myHtmlButton"/>

第一个是服务器端控件,可以绑定到(查看它的属性),并且该控件作为示例runat="server"呈现给浏览器。<input type="submit"/>

如果您愿意,您可以更改 asp.net 按钮类的呈现,使其返回完全不同的内容。

而且您也不仅限于使用 asp.net 类。您可以创建自己的控件,并将它们放入自定义创建的库中,您可以给这些控件添加自己的前缀。

如果我创建了这样一个自定义控件,我可以在 web.config 文件中为它注册一个前缀,因此我可以创建一个从原始按钮扩展的自定义按钮(但前面有一个默认标签......

<myc:CustomButton ID="myButton" Text="myButton" Label="myLabel" runat="server"/>

这可以呈现为:

<label>myLabel</label>
<button ID="*******">myButton</button>

星号表示它将从 .net 框架中获得的唯一 ID

如果您想了解有关自定义控件或扩展默认控件的更多信息,这里是创建自定义控件或从 TextBox 控件扩展的分步说明。它还显示了如何为控件添加自定义前缀(在本例中为“cc”) ,您可以在此处找到更多信息

于 2013-01-10T00:58:06.087 回答
1

runat="server"部件需要告诉 .NET 它必须在那里呈现一个按钮(其中将包含 .NET 特定的 ID,以便在 POST 时进行处理)。不太熟悉 Web 表单(我从 MVC 开始),但我认为这asp:部分是为了帮助区分服务器控件和标准 HTML 标记。

为什么不尝试删除它,如果它破坏了某些东西,那么您就知道它是必需的。例如,如果按钮在删除后没有显示,那么显然 .NET 标记解析器需要它在那里才能知道它是服务器控件的占位符。

于 2013-01-10T00:35:50.793 回答