Как можно получить переменную из выражения блока кода, отличного от блока, в котором переменная была объявлена? - PullRequest
3 голосов
/ 25 октября 2010

Может кто-нибудь объяснить принцип работы asp.Net ниже?

У меня есть 2 отдельных выражения asp.Net для кодовых блоков в разметке aspx с содержанием html между ними (элемент span в приведенном ниже примере).

В первом кодовом блоке в качестве переменной приращения для цикла для присутствует «i».

Затем кодовый блок вырезается с содержанием HTML.

И еще одно выражение блока кода открывается, но, как я вижу, я могу достичь переменной «i», которая была объявлена ​​в предыдущем блоке кода.

Итак, как asp.net обрабатывает -компилирует фрагменты кода-экспериментатора, объявленные в разметке? Проверяет ли он точки с запятой и генерирует ли некоторые анонимные методы, которые в конечном итоге приводят ко многим вызовам Response.Write на последнем месте?

Спасибо

<p>
   <%for (int i = 0; i < 30; i++)
     {
         Response.Write("Some text here");

         %>

     <span> ______________________________ </span> <%--So how this line is processed 
                                                    by ASP.Net so that it is embedded 
                                                    in the for loop as Response.Write 
                                                    method's parameter?--%>

   <%
         Response.Write(i*(i+1));

         Response.Write("<br />");
     }%>
</p>

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Вы путаете область действия кода C # со встроенной разметкой ASPX.ФАКТИЧЕСКИЙ блок кода находится между фигурными скобками {} независимо от того, что находится внутри этого кодового блока, в случае выше HTML-код все еще находится в пределах одного блока.

Просто посмотрите на открывающие и закрывающие фигурные скобки,определите свои блоки кода, знаки% выпадают и выходят из кода HTML / C #.

0 голосов
/ 25 октября 2010

Строка, на которую вы ссылаетесь, не использует вызов Response.Write над ней.Это просто встроенный текст на веб-странице.

Тег <span> не является "гостем" кода C #;код C # является гостем веб-страницы ASP (частью которой является тег <span>).

...