Почему разметка моего пользовательского элемента управления говорит мне «переменная не определена», несмотря на то, что переменная определена и открыта в коде?

#asp.net #.net #vb.net #user-controls #aspx-user-control

Вопрос:

В моем проекте у меня есть следующий пользовательский элемент управления:

Разметка ( SlidingScaleTableReadonly.ascx ):

 <%@ Control Language="vb" AutoEventWireup="false" CodeBehind="SlidingScaleTableReadonly.ascx.vb" Inherits="Client.Project.SlidingScaleTableReadonly" %>

<table class="table">
    <thead>
        <tr>
            <th scope="col">Résultat glycémique</th>
            <th scope="col">Unité à administrer</th>
        </tr>
    </thead>
    <tbody>
        <% For Each scaleEntry In ScaleEntries %>
            <tr>
                <td><%= scaleEntry.LowerValue %> - <%= scaleEntry.HigherValue %></td>
                <td><%= scaleEntry.UnitToDeliver %></td>
            </tr>
        <% Next %>
    </tbody>
</table>
 

Код ( SlidingScaleTableReadonly.ascx.vb ):

 Public Class SlidingScaleTableReadonly
    Inherits UserControl

    Public ScaleEntries As List(Of ScaleEntry)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

End Class
 

И следующая ошибка в строке 11 в SlidingScaleTableReadonly.ascx :

BC30451 «Масштабирование» не объявлено. Он может быть недоступен из-за его уровня защиты.

Я бы назвал компилятор неправильным в этом случае; scaleEntries определен и общедоступен. Что же тогда не так?

Комментарии:

1. Даже если он объявлен, основываясь на коде, мы видим, что значение по-прежнему равно НУЛЮ.

2. Выйдите из vs, затем перезагрузите компьютер. Теперь сделайте повторную сборку всего проекта-это должно устранить эти ошибки. Часто иногда они ВСЕ равно будут отображаться, но если вы создадите (или запустите) проект, они исчезнут. Я не могу сказать, когда/почему это происходит, но VS ЧАСТО будет пытаться разрешить эти выражения на стороне сервера встраивания в HTML-разметку.

3. @JoelCoehoorn Это было бы проблемой во время выполнения (и она решается во время выполнения). Такие ошибки не отображаются при редактировании.

4. На самом деле, они часто так делают! — вы видите ошибки компиляции в списке ошибок. Как указано выше, при перестроении все ошибки часто устраняются. Но я все еще думаю, что эти выражения на стороне сервера неверны.

Ответ №1:

Выйдите из vs, затем перезагрузите компьютер. Теперь сделайте повторную сборку всего проекта-это должно устранить эти ошибки. Часто иногда они ВСЕ равно будут отображаться, но если вы создадите (или запустите) проект, они исчезнут. Я не могу сказать, когда/почему это происходит, но VS ЧАСТО будет бороться за разрешение этих встроенных выражений на стороне сервера в HTML-разметке

В большинстве случаев повторная сборка все исправит, но я обнаружил, что иногда вам приходится выходить из VS, повторно запускать. Сделайте все заново, и ошибка исчезнет.

Комментарии:

1. Ах, да — прости меня! — попробуйте проект перестройки — посмотрите, исчезнет ли ошибка. как уже отмечалось, мне часто приходилось выходить против повторного запуска. Откройте проект, а затем выполните перестройку всего. Посмотрите, сработает ли это (я предполагаю, что когда-то так и было???)

2. Да, это и есть решение. Это досадная ошибка, я надеюсь, что VS в конце концов исправит ее. Большое спасибо!

3. Я не знаю, когда/почему. Но иногда ДАЖЕ повторная сборка все не исправляет. Вы должны выйти из VS, а затем повторно войти, а ЗАТЕМ заново собрать все. Но, как правило, ПРОСТО повторная сборка все исправит.