2016-10-10 6 views
0

Я использую stringbuilder для динамического создания динамического изображения для исследования, над которым я работаю. Код проверяется корректно, но не будет отображаться в HTML.StringBuilder и Radiobuttonlist

Это потому, что я не должен использовать stringbuilder для создания веб-элементов управления asp?

код здесь:

sb.Append(string.Format("<asp:RadioButtonList ID='" + qnumber + "' runat='server' RepeatDirection='Horizontal' RepeatLayout='flow' CssClass='answers'>")); 
sb.Append(string.Format("<asp:ListItem Text='Strongly Agree' Value='1'></asp:ListItem>")); 
sb.Append(string.Format("<asp:ListItem Text='Agree' Value = '2' ></ asp:ListItem>")); 
sb.Append(string.Format("<asp:ListItem Text='Disagree' Value='3'></asp:ListItem>")); 
sb.Append(string.Format("<asp:ListItem Text='Strongly Disagree' Value='4'></asp:ListItem>")); 
sb.Append(string.Format("<asp:ListItem Text='Not Applicable' Value='5'></asp:ListItem></asp:RadioButtonList><asp:RequiredFieldValidator runat='server' ID='" + qnumber + "v"+ "' ControlToValidate='ID='" + qnumber + "' ErrorMessage='please answer the question' CssClass='warning' />")); 
+0

Вы пишете какой-то инструмент для создания шаблонов, например [T4] (https://blogs.msdn.microsoft.com/webdev/2009/01/29/t4-templates-a-quick-start-guide-for -Asp-нетто-MVC-разработчиков /)? В противном случае неясно, как вы ожидаете, что ASP.Net будет компилировать итоговую строку, созданную вашим кодом. –

+0

Хорошо, что вы делаете со строковыми сборщиками? – Amy

+0

ничего в принципе. остальная часть html-файла строковой сборки. –

ответ

1

Проблема, вы не можете заставить ваш код позади, чтобы сгенерировать код ASP.Net, те должны быть размещены внутри вашей страницы ASPX. Asp.Net преобразует asp-теги в теги html и прослушивает их по коду, поэтому вы не можете отправлять asp-теги в свое представление, представление уже обрабатывается asp.net при запуске кода за кодом.

Ваш лучший выбор - отправить чистый HTML-контент на свою страницу и использовать другой способ для чтения его содержимого. Если вы спешите, я предлагаю вам использовать Javascript для заполнения HiddenField перед отправкой формы.

Вот пример того, как ваш StringBuilder должен выглядеть следующим образом:

sb.Append(string.Format("<input type="radio" name="answer" value="1" />Strongly Agree")); 
sb.Append(string.Format("<input type="radio" name="answer" value="2" />Agree")); 
sb.Append(string.Format("<input type="radio" name="answer" value="3" />Disagree")); 
sb.Append(string.Format("<input type="radio" name="answer" value="4" />Strongly Disagree")); 
sb.Append(string.Format("<input type="radio" name="answer" value="5" />Not Applicable")); 

Тогда вы просто использовать ниже код на JavaScript, чтобы установить значение в скрытое поле:

$('#<%= youHiddenFieldId.ClientID %>').val($("input:radio[name='answer']:checked").val()); 

Теперь вам просто нужно вызовите youHiddenFieldId.Value на код сзади, чтобы получить значение выбранного флажка.

+0

Спасибо, Лукас. В основном таблица данных заполняет вопросы для опроса, а построитель строк создает ответы, используя для (....). Ответы на вопросы просто необходимы для генерации ответов динамически. –

+0

Я просто представил пример кода в своем ответе. Посмотрите, помогает ли это. –

+0

приветствует Лукаса, может ли это повторяться в цикле for? –