好的,我们今天在工作中遇到了一个问题。这是一个奇怪的,我从来没有想过要尝试。服务器控件中的ASP.NET内联代码
<form id="form1" runat="server" method="post" action="Default.aspx?id=<%= ID %>" >
好的,这是非常丑陋的,我不会尝试过自己。它出现在几年前编写的一些代码中,但直到本周末一直在工作,直到在代码托管的客户端的Web服务器上安装了一堆更新之后。
这样做的实际结果是下面的HTML:
<form name="form1" method="post" action="Default.aspx?id=<%= ID %>" id="form1">
的网址结束这样的:
http://localhost:6735/Default.aspx?id=<%= ID %>
正如你所看到的,证明了“<”符号是在ASP.NET实际处理页面之前进行编码。对我来说这似乎很奇怪,因为我认为即使它不是很漂亮,但它应该起作用。我很困惑。
更糟糕的是,客户坚持认为这是IE中的一个错误,因为它似乎可以在Firefox中使用。事实上,它也在Firefox中被打破,除了某些原因,Firefox将它视为0.
关于为什么发生这种情况以及如何轻松修复它的任何想法?我试图在服务器控件中呈现的所有内容都会越过。
编辑 好吧,我发现了一个“修复”
<form id="form1" runat="server" method="post" action='<%# String.Format("Default.aspx?id={0}", 5) %>' >
但是,这需要我调用DataBind这是原来的黑客加入更多的黑客攻击的。猜猜如果没有人想到其他事情,我将不得不这样做。
哇!你确定没有其他方法可以解决这个问题吗?你是否正在做一些跨页的回帖?很少看到为webform应用程序指定的“操作”。 – 2010-05-25 00:44:53
它实际上发回自己。确实很奇怪!这是所有内嵌代码“后面”的Web表单。我同意,我从来没有在web表单中使用action属性。从来没有需要。 – John 2010-05-25 01:02:42