【问题标题】:Accessing code behind method Variable in aspx page在 aspx 页面中访问方法变量后面的代码
【发布时间】:2015-06-13 06:23:03
【问题描述】:

我正在使用自定义详细视图。我有一个查看所有程序的程序页面。当用户点击更新按钮时,用户被重定向到管理程序页面。管理程序页面包含一个从中获取所有行的方法。

public string ProgramsDetails()
{
    using (SqlConnection con = new SqlConnection(str))
    {
        string htmlStr = "";
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandText = " SELECT * from programs where ProgId=@ProgId";
        cmd.Parameters.AddWithValue("@ProgId", "1");
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
            int ProgId = reader.GetInt32(0);
            string ProgTitle = reader.GetString(1);
            string ProgBudget = reader.GetString(4);
            string ProgStarDate = reader.GetString(5); 

        }

        con.Close();
        return htmlStr;
    }
}

如何从 .aspx 页面访问变量?假设我想访问ProgTitle

我用过这个方法,但是好像不行

<%=ProjTitle%>

我想在受尊重的文本框中显示每一列的值

<div class="cmrs-panel-body no-padding">
        <div class="cmrs-form-inline">
            <div class="cmrs-form-row bordered">
                <label class="cmrs-form-label">Program Code Name</label>
                <div class="cmrs-form-item">
                    <input type="text" name="Code" class="large">
                </div>
            </div>
        </div>
        <div class="cmrs-form-inline">
            <div class="cmrs-form-row bordered">
                <label class="cmrs-form-label">Program Title</label>
                <div class="cmrs-form-item">
                    <input type="text" name="Title" class="large" value="<%=ProgTitle %>"> 
                </div>
            </div>
        </div>
        <div class="cmrs-form-inline">
            <div class="cmrs-form-row bordered">
                <label class="cmrs-form-label">Program Description</label>
                <div class="cmrs-form-item">
                    <textarea class="large"></textarea>
                </div>
            </div>
        </div>
</div>

通常我会将 html 代码添加到方法中,但这不可行,因此我想获取变量值并将其显示在文本框中。

htmlStr+="<table><tr><td>"+ProgTitle+"</td></tr></table>";

【问题讨论】:

  • 你能在定义ProjTitle的地方添加一部分你的.aspx代码吗?
  • 你不能访问局部变量。 &lt;%= VariableName/Property %&gt;只能访问全局变量
  • @ekad 答案应该适合你。

标签: c# asp.net


【解决方案1】:

ProgTitle 必须在后面的代码中声明为 protectedpublic 才能从 .aspx 访问。如下更改您的代码

protected string ProgTitle;

public string ProgramsDetails()
{
    using (SqlConnection con = new SqlConnection(str))
    {
        string htmlStr = "";
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandText = " SELECT * from programs where ProgId=@ProgId";
        cmd.Parameters.AddWithValue("@ProgId", "1");
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        if (reader.Read())
        {
            int ProgId = reader.GetInt32(0);
            ProgTitle = reader.GetString(1);
            string ProgBudget = reader.GetString(4);
            string ProgStarDate = reader.GetString(5);              
        }

        con.Close();
        return htmlStr;
    }
}

然后你可以在你的 aspx 代码中访问ProgTitle

<input type="text" name="Title" class="large" value="<%=ProgTitle %>">

【讨论】:

  • 这解决了问题,但是从数据库返回的值没有显示在文本框中。
  • 你在后面的代码中究竟在哪里调用ProgramsDetails方法?
  • 不,我的意思是你在哪里调用ProgramsDetails 方法?是在Page_Load吗?
【解决方案2】:

如果不使用数据绑定,如何使用会话并分配变量然后使用它。关于代码行为:SESSION.START(); SESSION["PjTitle"]=PrgTtile; 然后在 aspx 中使用:&lt;%= SESSION["PjTitle"] %&gt;

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 2020-01-17
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2021-09-30
    • 2018-01-25
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多