#c# #asp.net
#c# #asp.net
Вопрос:
Я пытаюсь передать переменную в свой «asp:Button CommandArgument» — я знаю, что мне нужно перепрыгнуть через некоторые препятствия, поскольку установлен runat = server, но я перепробовал все, что нашел до сих пор, но безрезультатно
Я знаю, что мой код работает хорошо, поскольку, если я явно определяю переменные в моем «asp: командный аргумент кнопки», все работает — но как только я пытаюсь вставить переменную через синтаксис <% %>? Переменная НЕ заменяется строкой, которую она представляет
Я использую VStudio 2019 community preview (и 2017) в качестве своей IDE, ориентированной на .net framework 4.7.2 — все строится чисто, и я знаю, что значение для переменной устанавливается — просто оно не попадает в мой «asp: командный аргумент кнопки», и мне нужно, чтобы
Я перепробовал все, что нашел — все перестановки синтаксиса <% $>, которые я могу найти, пробовал использовать CodeExpressionBuilder
Соответствующая часть моего проблемного кода является
<% if (variable is "value") { %>
<asp:Button ID = "button1"
runat = "server"
Text = "Processing '<%: variable %>' Records"
CommandArgument = '<%: variable %>'
OnCommand = "button1_Click"
/>
<% } %>
Я ожидаю, что переменная, которую я вставляю в «asp: командный аргумент кнопки», будет заменена на ее текущее значение
Что я получаю? Различные сообщения об ошибках и буквальный перевод моего ‘ или » завернутый <%: <%# <%= переменная%>, который не помогает
Я знаю, что могу жестко запрограммировать часть того, чего я хочу достичь, но это не оптимально и не помогает мне, когда я хочу передавать переменные даты в свои процедуры через «asp: командный аргумент кнопки»
Я знаю, что, должно быть, делаю что-то неправильно, но, хоть убейте, не могу понять, что
Есть предложения?
Комментарии:
1. Я заметил, что в
CommandArgument
части используются одинарные кавычки вокруг того, каким должно быть значение. Должны ли это быть двойные кавычки, как и другие атрибуты? Получает лиText
атрибут правильное значение? И где / как определяется «переменная»? Возможно, это проблема области видимости?2. Используйте элемент управления Repeater для добавления элементов управления и используйте выражения привязки данных для динамического добавления текста в управление.
Ответ №1:
ASP.NET не позволит вам объявлять элементы управления, подобные этому:
<asp:Button ID = "button1"
runat = "server"
Text = "Processing '<%: variable %>' Records"
CommandArgument = '<%: variable %>'
OnCommand = "button1_Click"
/>
Причина в том, что <asp:Button … />
она предварительно обрабатывается интерпретатором перед любыми встроенными инструкциями (например. <%: variable %>
).
Для установки / изменения свойств ASP.NET элементы управления формами, вы должны изменить их в коде за. Самое популярное место было бы в Page_Load()
событии. Вот так:
void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
button1.Text = "Processing " variable " Records";
button1.CommandArgument = variable;
}
}