【问题标题】:ASP.NET Control to HTML tag equivalentASP.NET 控件到 HTML 标记等效
【发布时间】:2010-10-02 11:48:23
【问题描述】:

我正在寻找一个备忘单,它可以让我向 HTML 设计人员展示标准 HTML 标记的等效 asp.net 控件。例如, 将呈现为 HTML

,而

【问题讨论】:

  • +1 表示您想知道您在使用 WebForms 时实际生成的内容。

标签: asp.net html tags servercontrols


【解决方案1】:
protected void CreateHeaders(List<Group_Info> group_Info)
{
    foreach (Group_Info gi in group_Info)
    {
        HtmlGenericControl groupContainer = new HtmlGenericControl("DIV");
        String lastLableID = "disp" + gi.GroupName.ToString().Replace(" ", "");
        groupContainer.ID = lastLableID;
        groupContainer.Attributes.Add("class", "content-groups");

        HtmlGenericControl groupTitle = new HtmlGenericControl("DIV");
        groupTitle.ID = lastLableID + "Sub1";
        if (gi.GroupName.Trim().Length == 0)
            groupTitle.Attributes.Add("class", "titlebar-hidden");
        else
        {
            groupTitle.Attributes.Add("class", "titlebar");
            groupTitle.InnerText = gi.GroupName.ToString().Trim();
        }

        groupContainer.Controls.Add(groupTitle);

        CreateFields(gi, ref groupContainer);

        this.pageContainer.Controls.Add(groupContainer);
    }
}

【讨论】:

    【解决方案2】:

    Stephen 的列表非常全面。不过,我会在其中添加以下注释:

    主要取决于已知的BrowserCaps

    1.x 面板将在 IE6+ 中呈现为 div - 但是在 Firefox(或其他“DownStream”浏览器 - 被视为 DownStream,因为默认情况下 Machine.Config 中没有它的详细信息)它将呈现为单个单元格表 - 这可以通过在 Machine.Config 或 Web.Configs 中为 Firefox/Opera/Safari/etc 提供更新的 BrowserCaps 来解决。

    此外,控件适配器可以更改输出 - 例如,CSS Control Adapters 将为大多数表格控件(登录、注册、转发器等)输出样式化的 div。

    请注意,在 TechEd/PDC 上宣布 ASP.NET 4.0 将默认内置 CSS 控制适配器。

    【讨论】:

    • BrowserCaps 在 2017 年 6 月 14 日是一个断开的链接
    • @Anon234_4521 为抬头欢呼。该功能在 .net 2.0 中已弃用,但在 3.5 之前仍受支持,因此我已将链接更新到最后支持的版本。
    【解决方案3】:

    这不是一个简单的问题,因为它取决于您所谈论的 .NET 版本以及有时控制的状态。例如,PANEL 在 1 和 1.1 中呈现为 TABLE,而在更高版本中它是 DIV。

    但总的来说(2/3),这里是:

    • 面板 - 分区

    • 面板 -- GroupingText="###" 是字段集,图例

    • 标签 - 跨度

    • 按钮 - 输入、键入按钮

    • 链接按钮 - 带有 JS 回发脚本的 Href

    • 超链接 - 标准 HREF

    • 图像按钮 - 输入,输入图像

    • 文本框 -- 默认为输入,输入文本

    • 文本框 -- 模式 = 密码为输入,输入密码

    • Textbox -- Mode= Multiline is Textarea

    • DropDownList - 选择

    • 列表框 - 选择

    • RadioButton - 输入,带有 GroupName 的 Radio

    • 复选框 - 输入,复选框

    • Repeater/Listview --Complex.

    • Gridview - 表格

    • 表格 - 表格

    • 文件 - 输入,类型=文件

      这就是基础。更深奥的控件(例如 LOGIN 控件)是一个表格,其中包含一堆赔率和结尾。

    【讨论】:

    • 请注意,LinkBut​​ton 呈现一个锚元素 (A),该元素在单击时执行回发。 HyperLink 元素更适合常规锚元素 (A)。
    • Panel -> div and 有时 table 也适用于 2.0,该死的缩小比例
    • @Crossbrowser - 非常好。 @annakata - 在构建列表时我没有考虑缩小规模。只是一个概括的概述
    • ASP.NET 控件“标签”输出一个 ,而不是标签。
    • @birdus - 我只在与输入控件关联时使用 asp:label,因此使用 AssociatedControlId 属性。将该设置设置为有效的输入控件,然后 ASP.Net Label 会吐出一个 LABEL 元素。
    【解决方案4】:

    这并不能直接回答您的问题,但在很多情况下,您可以将 runat="server" 添加到常规 HTML 标记以使 ASP.Net 了解它。如果您希望能够动态更改页面,但仍允许设计人员对其进行处理,这可能会使设计人员的工作变得更容易。

    <div id="myDiv" runat="server"></div>
    <span id="mySpan" runat="server"></span>
    

    编辑:

    我忘记提及的一件事(正如 steve_c 所指出的)是添加 runat="server" 会更改标签的 ID,这可能有点麻烦。如果您在 CSS 中使用 ID,那么您有点不走运,但是在您的 JavaScript 中,您可以添加类似 的内容来获取由 .Net 生成的 ID。

    【讨论】:

    • 补充一下 Matt Ephraim 所说的,你应该知道,通过添加 runat="server" ASP.NET 可能会修改相关标签的 id 属性,如果该标签位于ASP.NET 命名容器。
    • 确实如此。我应该提到这一点。
    • 这是真的,您几乎可以将 runat 添加到任何控件。在这里,我们已经使用 asp.NET 服务器控件创建了 aspx 页面。我们现在有一位来自 PHP/HTML 世界的新设计师在做这件事,我希望让他更好地了解服务器控件。
    【解决方案5】:

    如果您需要呈现特定标签,htmlgenericcontrol 可能会有所帮助

    【讨论】:

    • 使用这个而不是实际的 html 标签的目的是什么?
    猜你喜欢
    • 2010-09-16
    • 2014-04-09
    • 1970-01-01
    • 2016-04-07
    • 2010-09-06
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多