Response.write ASP的多行html?

时间:2013-08-07 20:52:51

标签: asp-classic response.write

我有一个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
%>

非常感谢,

3 个答案:

答案 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 - 完全披露,我最近接管了这个项目。仍在努力重建官方网站),模板和更好的托管字符串连接。在事实之后添加这样的东西并不总是很容易,如果你只是修改一个现有项目(而不是创建一个新项目),可能会有点过分。