【问题标题】:Passing a hex color to an ASP.NET page using ULR Parameter使用 URL 参数将十六进制颜色传递给 ASP.NET 页面
【发布时间】:2009-08-21 02:31:45
【问题描述】:

我正在尝试允许用户为我的 asp.net 网站指定背景颜色。所以我想将页面颜色传递到我的网址中,例如:

UserDetails.aspx?Color=#FFFFFF

但是,一旦我包含 # 字符,我似乎无法使用以下方法获取参数 Color 的正确值:

color = System.Drawing.ColorTranslator.FromHtml(Request.Params["Color"]);

请帮忙

【问题讨论】:

    标签: asp.net url-rewriting


    【解决方案1】:

    井号字符 (#) 在 URL 中用于指示片段标识符(HTML 中的书签/锚点)的开始位置。您可能希望将其 URL 编码为 %23。

    或者,正如 Andrew 在评论中指出的那样,您可以让用户传递不带井号的参数,然后再添加。

    【讨论】:

    • 或跳过 url 编码,让它们通过不带 # 的十六进制代码。然后在您的代码中添加 # 重新登录
    【解决方案2】:
    UserDetails.aspx?Color=FFFFFF
    
    string colString = Request["Color"];
    Color col = ColorTranslator.FromHtml(String.Format("#{0}", colString));
    

    【讨论】:

      【解决方案3】:

      或者你可以省略散列并像这样写

      color = System.Drawing.ColorTranslator.FromHtml("#" + Request.Params["Color"]);

      我没有测试过上面的,但找不到它不起作用的原因,你也可以在上面贴上这个

      【讨论】:

        【解决方案4】:

        如果您正在修改查询字符串客户端,我将使用 JavaScript encodeURIComponent 方法对您的所有数据进行编码。

        【讨论】:

          【解决方案5】:

          为了将来参考,请注意HttpUtility.UrlEncode Method。所有查询字符串参数在通过 URL 传递之前都应该进行 URL 编码。 “URL 编码将 URL 中不允许的字符转换为字符实体等效项。”例如。

          string colour = HttpUtility.UrlEncode("#FFFFFF");
          string url = "UserDetails.aspx?Color=" + colour;
          

          【讨论】:

            猜你喜欢
            • 2022-06-29
            • 2011-02-11
            • 2012-02-16
            • 2021-04-02
            • 2019-10-29
            • 1970-01-01
            • 1970-01-01
            • 2011-10-25
            • 2020-03-05
            相关资源
            最近更新 更多