Asp.net 使用编码字符代替正确的字符

Asp.net 使用编码字符代替正确的字符,asp.net,html,iframe,character-encoding,Asp.net,Html,Iframe,Character Encoding,我有一个小问题,我希望你能帮我解决这个烦人的问题 我需要在管理面板中使用iFrame,以允许用户使用选择服务,在HTML中,我有: <iframe scrolling="yes" runat="server" title="Par Selection" id="iFrame" frameborder="0" enableviewstate="true" width="100%" height="490" /> 输出如下: <iframe id="tcMain_tabP

我有一个小问题,我希望你能帮我解决这个烦人的问题

我需要在管理面板中使用iFrame,以允许用户使用选择服务,在HTML中,我有:

<iframe scrolling="yes" runat="server" title="Par Selection" id="iFrame"
    frameborder="0" enableviewstate="true" width="100%" height="490" />
输出如下:

<iframe id="tcMain_tabPARSelection_iFrame" scrolling="yes" title="Par Selection" 
   frameborder="0" width="100%" height="490" 
   src="https://www.parurval.se/urval/?username=myUsername&amp;password=myPassword">
</iframe>
我不能输入用户/pwd,我看到了表单,我可以输入文本,但它什么也不做,它只刷新iframe内部页面,在一个完整的窗口中这样做,效果很好

在该管理面板中,我有一个文本框,用于向用户添加用户名和密码,以便进入管理页面,我将直接跳转到iFrame中的服务,因此用户无需每次输入user/pwd即可登录,这就是我尝试动态添加这些值的方式

有什么想法吗

添加:
如果我将正确的URL地址(带有user和pwd)放在HTML端的iFrame src属性中(不是动态的),那么一切都可以正常工作:(

这似乎是一种可以利用URL编码来隐藏&,绕过XML编码的情况。&是U+0025,因此可以将其编码为%25:{0}%25password={1}

在这种情况下,您可以利用URL编码来隐藏&,绕过XML编码。&is U+0025,因此可以将其编码为%25:{0}%25password={1}

您应该使用

     HttpUtility.HtmlEncode(String.Format("https://www.parurval.se/urval/?username={0}&password={1}",            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Username),            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Password)));
你应该使用

     HttpUtility.HtmlEncode(String.Format("https://www.parurval.se/urval/?username={0}&password={1}",            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Username),            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Password)));

&;的存在实际上是正确的。大多数浏览器都足够宽容,不会因为仅仅看到&;那里而窒息,但在技术上是不正确的。

在那里&;的存在实际上是正确的。大多数浏览器都足够宽容,不会因为仅仅看到&;那里而窒息,但在技术上是不正确的。

“&”是HTML(更具体地说是SGML)中的一个特殊字符,因此对其进行编码是正确的。是的,即使在链接URL中也是如此。

“&”是HTML(更具体地说是SGML)中的一个特殊字符,因此对其进行编码是正确的。是的,即使在链接URL中也是如此。

状态:

作者应使用“&;”(ASCII十进制38)而不是“&”,以避免与字符引用(实体引用开放分隔符)的开头混淆。作者还应在属性值中使用“&;”,因为属性值中允许字符引用

因此,将
&
编码为
&
是正确的行为,因为
src
属性值()的解释如下所述:

CDATA是文档字符集中的字符序列,可能包括字符实体。用户代理应按如下方式解释属性值:

  • 将字符实体替换为字符
  • 忽略换行
  • 用一个空格替换每个回车或制表符
否则,
src
属性值如
/foo?bar§=123
将是不明确的,因为它们可以按字面解释为
/foo?bar§=123
或(替换)为
/foo?bar§=123
状态:

作者应使用“&;”(ASCII十进制38)而不是“&”,以避免与字符引用(实体引用开放分隔符)的开头混淆。作者还应在属性值中使用“&;”,因为属性值中允许字符引用

因此,将
&
编码为
&
是正确的行为,因为
src
属性值()的解释如下所述:

CDATA是文档字符集中的字符序列,可能包括字符实体。用户代理应按如下方式解释属性值:

  • 将字符实体替换为字符
  • 忽略换行
  • 用一个空格替换每个回车或制表符

否则,
src
属性值如
/foo?bar§=123
将是不明确的,因为它们可以按字面解释为
/foo?bar§=123
或(替换)作为
/foo?bar§=123

编码???我猜你不理解威瑟我的问题或编码功能编码???我猜你不理解威瑟我的问题或编码功能我第一次读的时候很荒谬,但是,在我写东西之前我不得不尝试,你自己尝试过吗?嗯,在我的情况下,我没有为了转义&。事实上,我一直在使用它。MSDN url包含(VS8.5)。标记语法是[text](url),因此它会在VS(8.5)之后截断url。%28VS8.5%29确实有效。url编码在这里是错误的,您将“username”值设置为等于“username&password”.我第一次读的时候很荒谬,但是,在我写东西之前我必须尝试一下,你自己尝试过吗?好吧,在我的情况下,我不必逃避&。事实上,我一直在使用这个。MSDN url包含(VS8.5)。标记语法是[text](url),所以它会在VS(8.5)之后截断url.%28VS8.5%29确实有效。URL编码在这里是错误的,您正在使“用户名”值等于“用户名和密码”。我知道:)但我需要在HTML中显示&以分离查询字符串参数,有什么办法吗?您不明白。类似“../urval/?username=A&;password=b”的URL是正确的。不需要编写无效的HTML,浏览器可以很好地处理正确的HTML。:)我愿意。。。但这不是在浏览器中,而是在iFrame中,如果使用iFrame,该行为不会复制:)端点不知道是什么&;是请为你自己试一试。它是否在一个iframe中并不重要。它是HTML。您必须编码特殊字符,如“&”。没有讨论的必要。另外,如果您遇到问题,我很确定这不是因为“&”已被编码。我知道:)但我需要在HTML中显示&以分离查询字符串参数,有没有关于如何实现这一点的想法?您不明白。像这样的URL?
     HttpUtility.HtmlEncode(String.Format("https://www.parurval.se/urval/?username={0}&password={1}",            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Username),            
parSettings.GetSettings(parSettings.SettingsType.PARSelection, parSettings.SectionType.Password)));