【问题标题】:accessing variable defined and set in code behind - on aspx page访问在后面的代码中定义和设置的变量 - 在 aspx 页面上
【发布时间】:2015-07-13 00:22:36
【问题描述】:

很抱歉提出这样一个基本问题。我在 C# 中工作,但必须在用 vb.net 编写的网站上做一些事情

在 C# 中,我可以声明一个变量并像这样在后面的代码中设置它。

public partial class _Default : System.Web.UI.Page
{
    public string str = "Fred";
    protected void Page_Load(object sender, EventArgs e)
    {
    str = "Jim";
    }
}

而且,在 .aspx 页面上,我可以在页面上的任何地方写:

<% Response.Write(str) %>

它会在屏幕上写“Jim”。

你如何在 vb.net 中做到这一点?我有...

Public Class _Default
Inherits System.Web.UI.Page
Public Ary As ArrayList
Public str As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim str as String
str = "Freda"

如果我在 .aspx 页面上写 - 什么都不会写。

如果我在 .aspx 页面上写 - 它会将“Freda”写到屏幕上。

在 vb.net 中 - 您必须做什么才能访问 .aspx 页面上后面代码中设置的变量?

我对设置标签等服务器控件的文本值不感兴趣。我真正需要做的是:

从数据库调用中获取图像列表并

在 .aspx 页面上构建一个动态 jquery 滑块,方法是遍历图像列表并编写各种

  • 标签和点击事件等。

    有时我的滑块会有 3 张图片,其他时候可能有 6 或 8 张。可以是 3 到 11 之间的任何数字。但我需要根据从数据库返回的数据动态构建它。

  • 【问题讨论】:

    • Dim str as String 创建一个 new str 变量局部于 Page_Load
    • 那么,如何声明可用于 .aspx 页面的公共字符串?
    • 如果你只是摆脱那条线,它不起作用吗?你已经有一个全局声明 Public str As String
    • 不知道这是否有帮助,但每当我需要将 C# 转换为 VB.NET 或 VB.NET 转换为 C# 时,我都会使用 converter.telerik.com。您只需将代码粘贴进去,然后它就会转换它。
    • 致 Plutonix - 是的,这确实有效 - 如果我删除本地声明。我想要做的是公开声明一个 ArrayList - 这样我就可以在 .aspx 页面上循环遍历它并动态生成具有动态数量的
      • 。所以,我可以添加一个公共 str 并将 str 设置为“Fred”,但是如果我添加 Public Ary As ArrayList 然后,在 Page_Load 中写入 Ary.Add("fred") - 它说'对象引用未设置为对象的实例'。我在其他地方阅读以放置
          并动态构建 html。但它“由于其保护级别而无法访问”

      标签: vb.net


      【解决方案1】:

      当您声明公共字符串时,您还应该定义一个默认值。例如:

      Public str as String = "Fred"
      

      然后在 Page_Load 事件中您不需要声明新变量,只需像在 C# 中那样引用公共变量即可:

      str = "Freda"
      

      然后在将其写入输出时,您只需声明:

      <%=str%>
      

      但是,如果您从数据库中导入,那么使用 DataList 对象并以这种方式为滑块构建 HTML 不是最好的吗?

      【讨论】:

        【解决方案2】:

        如果您在页面加载之前定义 str,您将能够在整个班级中访问它。希望这会有所帮助。

        Public Class _Default : System.Web.UI.Page
        Inherits BasePage
        
        Dim str as String = ""
        
        protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        {
            str = "Jim";
            Response.Write(str)
        
        }
        

        【讨论】:

        • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
        猜你喜欢
        相关资源
        最近更新 更多
        热门标签