0

我有一个在验证用户后显示在线表单的 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
%>

非常感谢,

4

3 回答 3

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
%>
于 2013-08-07T21:05:01.707 回答
1

你有几个选择,你选择哪一个取决于一些事情......

(1) 您可以按照Diodeus 的建议进行操作,并使用代码块:

If rs.count > 0 Then
    %>
    <form>
    <input type="text" id="etc" />
    </form>
    <%
End If

(2) 您可以按照Yuriy Galanter 的建议进行操作,并通过字符串连接构建您的表单:

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 - 完全公开,我最近接手了这个项目。仍在重建官方网站),带有模板和更好地管理的字符串连接。事后添加这样的东西并不总是那么容易,如果您只是修改现有项目(相对于创建新项目),可能会有点矫枉过正。

于 2013-08-07T21:32:52.553 回答
0

您可以在变量中逐步构建表单,例如

Dim sHTML;

sHTML = "<form>"
sHTML = sHTML & "<p><input type=""text"" id=""inputEmail""></p>"
'... etc.

Response.Write sHTML

使用 HTML 标记,例如<br/><p></p>将输入元素放置在新行处。

如果您使用的是 ASP.NET/VB.NET,则可以使用 StringBuilder,它可以更有效地构造动态字符串

于 2013-08-07T21:06:34.107 回答