我有一个asp页面,在验证用户后显示在线表单。我正在使用Response.Write "form goes here"
但是,表格很长(100多行)。
有没有办法用多行html做Response.Write?我想做这样的事情:
<%
If rs.rcount > 0 then
response.write "
<form>
<input type="text" id="inputEmail">
</form>"
End if
%>
非常感谢,
答案 0 :(得分:2)
使用代码块,而不是response.write
。
<%
...your VB ....
if a=b then
%>
<h1> HTML GOES HERE</h1>
<form>
<input type="text" id="inputEmail">
</form>
<%
end if
... more VB code
%>
答案 1 :(得分:0)
您可以在变量中逐步构建表单,例如
Dim sHTML;
sHTML = "<form>"
sHTML = sHTML & "<p><input type=""text"" id=""inputEmail""></p>"
'... etc.
Response.Write sHTML
使用<br/>
或<p></p>
等HTML标记将输入元素放置在新行中。
如果你正在使用ASP.NET / VB.NET,你可以使用StringBuilder,它可以更有效地构建动态字符串
答案 2 :(得分:0)
你有几个选择,你选择哪一个取决于一些事情......
(1)你可以Diodeus suggested,并使用代码块:
If rs.count > 0 Then
%>
<form>
<input type="text" id="etc" />
</form>
<%
End If
(2)您可以Yuriy Galanter suggested执行,并通过字符串连接构建表单:
Dim sHTML;
sHTML = "<form>"
sHTML = sHTML & "<input type="text" id="etc" />"
'... etc.'
sHTML = "</form>"
If rs.rcount > 0 Then
Response.Write sHTML
End If
(3)你可以按照你最初的想法做,一次写出一行或三行:
If rs.rcount > 0 Then
Response.Write "<form>"
Response.Write "<input type="text" id="etc" />" & _
"<input type="text" id="other" />"
'The underscore above indicates that the string/command/etc. continues on the next line, whitespace is ignored.'
Response.Write "</form>"
End If
(4)您可以混合搭配上述
的任意组合选项1的好处是,如果您已经准备好HTML,它可以非常快速,易于编辑并且易于实现。
选项2的好处是你不必担心上下文切换(在ASP 3中不是一个问题,但是如果你阅读和研究的话,你会看到它提到的东西),而且(在我看来)意见)如果您的表单中有部分内容可能会根据其他业务逻辑发生变化(或者如果您认为在不久的将来需要这样做),则更容易插入变量
选项3的好处是(再次,我的观点)更容易根据业务逻辑有条件地显示/隐藏/更改表单的部分(对你来说听起来不像是一个问题,但它值得保留心。)
根据您的情况,您可能会发现最好的方法是上述的一些组合。请记住,您执行的字符串连接越多,内存管理就越差。
还有一些图书馆(如ASP-Ajaxed - 完全披露,我最近接管了这个项目。仍在努力重建官方网站),模板和更好的托管字符串连接。在事实之后添加这样的东西并不总是很容易,如果你只是修改一个现有项目(而不是创建一个新项目),可能会有点过分。