0

我正在尝试在 aspx 页面的文件后面的代码中调试一些代码。我在页面和 web.config 中都将调试设置为 true。

有人可以告诉我为什么a)即使下拉列表已填充,断点也不会触发,b)为什么当我取消注释msgbox时它永远不会触发并且下拉列表不会填充。

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

    If IsPostBack Then
        ddlCity.Items.Clear()
        Dim context As New enerteckEntities()

        'Dim query = context.DistinctCityFromZiptax(Convert.ToInt16(ddlState.SelectedValue))
        Dim query = From c In context.ziptaxes Where c.StateID = ddlState.SelectedValue Order By c.City Select c.City, c.ZipTaxId
        'MsgBox(query.Distinct().ToList())

        ddlCity.DataSource = query.Distinct().ToList()
        ddlCity.DataValueField = "ziptaxid"
        ddlCity.DataTextField = "City"
        ddlCity.DataBind()
    End If
End Sub
4

2 回答 2

0

要达到断点,Visual Studio 必须附加到托管 aspx 页面的进程。

这通常在 Web 应用程序项目中通过按 F5 键或单击“调试”菜单并单击“开始调试”来完成。

于 2012-09-12T15:59:38.520 回答
0

那么根据您的代码,您只会在 PostBack 之后执行此操作,而不是在初始页面加载时执行。

MsgBox 永远不会出现,因为这不是 WinForms 应用程序!您不能在 web.application 中使用它。如果你愿意,你可以使用 Response.Write() 或者只是在页面中添加一个虚拟标签并临时设置 text 属性。这是相同的效果。

最简单的就是调试它。确保您的断点是完整的红点,并且您必须处于调试模式。如果您尝试从 IIS 进行调试,则必须附加到进程。如果您使用的是 IIS7(我假设您是),那么您必须转到:调试菜单 > 附加到进程 > 找到名为“w3wp.exe”的进程并双击它。你现在附身了。

如果你的断点在开始调试后不是完整的红点,那么你的编译代码和你的调试文件不匹配。进行重建而不是构建。除此之外,您可能会遇到一个奇怪的问题,您可以尝试删除您的 obj 和 bin 文件夹(确保首先保存任何第三方 dll)。

于 2012-09-12T16:07:58.297 回答