<asp: командный аргумент кнопки= не работает — «переменная» не заполняется «значением»

#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;
   }
}