【问题标题】:How to modify the HTML and BODY tags in an ASP.NET page without adding runat=server to the elements?如何在不向元素添加 runat=server 的情况下修改 ASP.NET 页面中的 HTML 和 BODY 标记?
【发布时间】:2011-11-22 08:18:12
【问题描述】:

在尚未准备好从 2.0 升级到 4.0 的 ASP.NET Web 表单项目中,需要进行更改以允许在不添加 runat=server 的情况下修改页面上的 HTML 和 BODY 标记到导致 2.0 样式的“丑陋 ids”的标签,如“ctrl_100...”

例如,我们如何使用 JavaScript、响应过滤器(查找这些特定标签的正则表达式对这一点很有帮助)或其他东西来更改这些...来自:

<html xmlns="//www.w3.org/1999/xhtml">
<body>

收件人:

<html lang="jp=JP" xmlns="//www.w3.org/1999/xhtml" dir="rtl">
<body dir="rtl">

JavaScript 似乎是一种可能性,但来自服务器端的函数可能会决定页面应该使用的语言和方向。

【问题讨论】:

  • 如果您使用母版页,您的客户 ID 将被修饰。这就是为什么你会收到那些丑陋的名字。
  • @mplungjan 感谢您删除了“123456”——它不允许我在不添加文本的情况下编辑格式!

标签: javascript asp.net localization


【解决方案1】:

如果您能够使用 jQuery,它会让您的生活更轻松。您可以先使用服务器中的值设置一些隐藏字段,然后使用这些字段在 jquery 中获取值。

    <script type="text/javascript">

       $(function(){
          var dir = $("[id$='whatever_you_named_your_hidden_field']").val();
          var lang = $("[id$='whatever_you_named_your_second_hidden_field']").val();

          $('body').attr('dir', dir);
          $('html').attr('lang', lang).attr('dir', dir);
       });

    </script>

编辑 根据 Chamika Sandamal 的回答更新了我的回答

【讨论】:

    【解决方案2】:

    如果你使用的是 jQuery,你可以使用下面的 jQuery 代码去掉那些丑陋的名字,

    $("[id$='actualId']")
    

    【讨论】:

    • 是的。概念是,它返回包含 id 以实际 id 结尾的元素。所以你不需要硬编码生成丑陋的 id
    • 虽然,最后是否缺少]
    • @csharpsi:哦,我没看到。感谢您指出那个错字。
    【解决方案3】:
    namespace Website
    {
        public static class Utils
        {
            public static string HtmlAttributes()
            {
                 return " lang='jp=JP' dir='rtl'";
            }
            public static string BodyAttributes()
            {
                 return " dir='rtl'";
            }
        }
    }
    
    <html xmlns="//www.w3.org/1999/xhtml"<%= Website.Utils.HtmlAttributes()%>>
    <body<%= Website.Utils.BodyAttributes()%>>
    

    如果您确定总有一些属性,您可以删除第一个空格并将其添加到标记中。

    我更喜欢这种方法而不是javascript方法,因为最新的搜索引擎无法知道html页面的语言或方向。

    【讨论】:

      【解决方案4】:

      如果您使用的是 .NET 4,您可以在 page 指令中添加 ClientIDMode="Static",然后强制元素的 ID 保持不变,从而更容易从 JavaScript 访问它。

      然后您可以使用 ClientScript.RegisterStartupScript 从后面的代码中添加一些 JavaScript 来操作元素。

      【讨论】:

        猜你喜欢
        • 2012-03-11
        • 2019-12-29
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        • 2019-01-20
        相关资源
        最近更新 更多