Asp classic 我在一行涉及response.write的ASP代码中遇到问题

Asp classic 我在一行涉及response.write的ASP代码中遇到问题,asp-classic,vbscript,Asp Classic,Vbscript,好的,伙计们,我正在尝试用经典ASP为一个按钮编写一行代码,该按钮将触发它转到另一个带有querystring变量的页面。然而,我有困难让这个工作 以下是我目前的代码: response.write "<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info' tabindex='7' onclick='window.location=updatecustomer.asp?Upda

好的,伙计们,我正在尝试用经典ASP为一个按钮编写一行代码,该按钮将触发它转到另一个带有querystring变量的页面。然而,我有困难让这个工作

以下是我目前的代码:

response.write "<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info' tabindex='7' onclick='window.location=updatecustomer.asp?UpdateID=""'" & rs("ID") & "'""/></td>" & vbCrLf

response.write“对于其中一个,您应该对html属性使用双引号,对javascript属性使用单引号

onclick=window.location=updatecustomer.asp?UpdateID=""'" & rs("ID") & "'"" />
应该是

onclick=""window.location='updatecustomer.asp?UpdateID=" & rs("ID") & "'"" />

除此之外,您应该直接输出html,而无需asp将其作为字符串进行打印

我的意思是,你可以做的不是整个
response.write…

%><td valign="top"><input type="button" name="cmdUpdateInfo" value="Update Info" tabindex="7" onclick="window.location='updatecustomer.asp?UpdateID=<%=rs("ID")%>'"/></td>
<%
%>

首先,html属性应该使用双引号,javascript属性应该使用单引号

onclick=window.location=updatecustomer.asp?UpdateID=""'" & rs("ID") & "'"" />
应该是

onclick=""window.location='updatecustomer.asp?UpdateID=" & rs("ID") & "'"" />

除此之外,您应该直接输出html,而无需asp将其作为字符串进行打印

我的意思是,你可以做的不是整个
response.write…

%><td valign="top"><input type="button" name="cmdUpdateInfo" value="Update Info" tabindex="7" onclick="window.location='updatecustomer.asp?UpdateID=<%=rs("ID")%>'"/></td>
<%
%>

由于您目前已经编写了一行代码,它将转换为

<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info'
tabindex='7' onclick='window.location=updatecustomer.asp?UpdateID="'999'"/></td>

您当前编写的代码行将被翻译成

<td valign='top'><input type='button' name='cmdUpdateInfo' value='Update Info'
tabindex='7' onclick='window.location=updatecustomer.asp?UpdateID="'999'"/></td>

由于这是一个循环,我不希望脱离ASP代码,而是使用某种“模板”:

Dim单元模板
cellTemplate=“更新信息”
直到R.EOF为止
response.write Replace(单元格模板“$id”、rs(“id”))和vbCrLf
下一个
环

这更优雅,不会创建意大利面代码,另外,您最好使用普通按钮,而不是
元素。

由于这是一个循环,我更喜欢不打破ASP代码,而是使用某种“模板”:

Dim单元模板
cellTemplate=“更新信息”
直到R.EOF为止
response.write Replace(单元格模板“$id”、rs(“id”))和vbCrLf
下一个
环

这更优雅,不会产生意大利面代码,而且你最好使用普通按钮,而不是
元素。

因此,将其分解为一个最小的测试用例。哪一部分出错了?我实际上用这段代码解决了它,它看起来很糟糕,但很有效。
code
response.write”“&vbCrLfSo将其分解为一个最小的测试用例。哪一部分出了问题?我用这段代码解决了它,它看起来很糟糕,但很有效
code
response.write”“&vbCrLf+1作为最终解决方案,比可怕的响应要好得多。编写代码。根据我的经验,如果允许将HTML/XML属性值放在“”中,将Javascript字符串文本放在“”中,那么追踪的bug就会减少。这个答案中的最后一个方法实现了这个目标,并且更容易阅读。最后的解决方案是+1,比可怕的回答要好得多。编写代码。根据我的经验,如果允许将HTML/XML属性值放在“”中,将Javascript字符串文本放在“”中,那么追踪的bug就会减少。此答案中的最后一种方法实现了这一目标,并且更易于阅读。您可能无意将UpdateID=“'999]”传递给查询字符串(您更可能希望UpdateID=999)。请阅读以上我的评论,了解我是如何解决此问题的。无论如何,我感谢您的帮助。您可能不想将UpdateID=“'999]”传递给查询字符串(您更可能希望UpdateID=999)。请阅读我上面的评论,了解我最终如何解决它。无论如何,我感谢你的帮助。