2013-08-07 3 views
0

У меня есть страница asp, которая отображает онлайн-форму после проверки пользователя. Я использую Response.Write "form goes here" Однако форма очень длинная (100+ строк).Response.write multi line html для ASP?

Есть ли способ, который я могу сделать Response.Write с многострочным html? Я хочу сделать что-то вроде этого:

<% 
If rs.rcount > 0 then 
    response.write " 
     <form> 
      <input type="text" id="inputEmail"> 
    </form>" 
End if 
%> 

Большое спасибо,

+2

Не можете добавить метки, которые вы хотите добавить:
? –

+0

Как вы получаете данные формы? Если это всего лишь статический текст, зачем даже использовать response.write? –

+0

извините за новый asp, если theres лучший способ сделать это, пожалуйста, дайте мне знать. В основном asp проверяет пользователя, если пользователь проверен asp, должен выплеснуть эту форму. – thedeepfield

ответ

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 
%> 
+0

Я обновил свой код. Я использую оператор if. содержит ли весь оператор if в одной скобке? или он может быть разбит, как у вас? – thedeepfield

+0

Думаю, вы можете! благодаря! – thedeepfield

+0

Я сделаю и отредактирую, чтобы продемонстрировать. –

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, который является гораздо более эффективным для построения динамических строк

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 - это (снова , мое мнение) легче условно показать/скрыть/изменить части формы в зависимости от бизнес-логики (это не похоже на проблему для вас как такового, но это стоит иметь в виду.)

В зависимости от вашей ситуации, вы можете найти b подход является некоторым сочетанием вышеизложенного. Просто имейте в виду, что чем больше конкатенаций строк вы делаете, тем хуже будет управление памятью.

Есть также некоторые библиотеки (например, ASP-Ajaxed - полное раскрытие, я недавно взял на себя проект, все еще работая над перестройкой официального сайта) с шаблонами и улучшенной конкатенацией строк. Добавление чего-то подобного после того, как факт не всегда прост и может быть излишним, если вы просто модифицируете существующий проект (vs.создание нового проекта).