У меня есть главная страница, содержащая форму заявки, на ней есть набор вопросов, а затем в конце она должна иметь от 0 до 5 дополнительных вопросов в зависимости от позиции, к которой применяется. Здесь фрагмент кода из файла Apply.Masterpage:
<div class="row">
<label>Please specify the main 3 software languages / technologies you have worked with in the last 5 years, and at what level you would rate yourself (between 1 and 5 where 1 is poor and 5 is excellent) *
<asp:TextBox ID="QuestionC" runat="server" TextMode="MultiLine" Rows="10"></asp:TextBox>
<asp:RequiredFieldValidator ID="QuestionCRequired" ControlToValidate="QuestionC"
ErrorMessage="Please provide a mobile phone number." runat="server" />
</label>
</div>
и это хорошо, печатает текстовое поле с действующим валидатором и меткой, однако проблемы начинаются с кода, который расположен прямо под ним:
<%
string[] questions = new string[] { "question1", "question2", "question3", "question4", "question5" };
foreach (var question in questions)
{
if(!(umbraco.library.GetItem(question).Equals("", StringComparison.Ordinal)))
{
var questionRequired = (question + "Required");
%>
<div class="row">
<label><%:question%>+<%:umbraco.library.GetItem(question)%>
<asp:TextBox ID=<%:question%> runat="server" TextMode="MultiLine" Rows="10"></asp:TextBox>
<asp:RequiredFieldValidator ID=<%:questionRequired%> ControlToValidate=<%:question%>
ErrorMessage="Please anwer the question" runat="server" />
</label>
</div>
<%}
}%>
который должен печатать два дополнительных текстовых поля, но он печатает:
question1+ksdgfjsdgfjsdg
question2+jugkjfkhfkhg
Где question1 - это имя поля в Umbraco, а "ksdgfjsdgfjsdg" - это реальный вопрос, поэтому он выбирает правильные данные из Umbraco, но похоже, что он пропускает теги asp, которые странны, потому что работа прекрасна в нескольких строках выше. Единственное отличие заключается в использовании тегов <%%> в дополнительном вопросе. Как создать текстовое поле? Я пытался поставить код, ответственный за печать дополнительных вопросов в макросписке, но я получил только то, что я сейчас.
Я мог быть совершенно неправ здесь, но я не уверен, что вы можете динамически создавать текстовые поля asp.net таким образом. Вот почему он только дает вам предметы сразу после тега метки.
Я думаю, что если вы хотите динамически их создать, вам нужно сделать что-то вроде
myTextBox = new TextBox();
myTextBox.ID = "txtIDGoesHere";
PanelForMyTextBox.Controls.Add(myTextBox);
Но я, возможно, неправильно понял этот вопрос.