在aspx页面中访问代码后台方法变量

4

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

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>";

你能添加一部分你的 .aspx 代码,其中包含定义 ProjTitle 的内容吗? - ekad
<input type="text" name="Title" class="large" value="<%=ProgTitle %>"> - user3127648
1
你无法访问本地变量。只有全局变量可以通过 <%= 变量名/属性 %> 访问。 - Vinod Kumar
@ekad的答案应该适合你。 - Vinod Kumar
2个回答

3

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 %>">

这解决了问题,但是从数据库返回的值没有显示在文本框中。 - user3127648
在代码后台中,您确切地在哪里调用 ProgramsDetails 方法? - ekad
不是,我的意思是你在哪里调用了 ProgramsDetails 方法?是在 Page_Load 里吗? - ekad

1
如果不使用数据绑定,那么可以使用会话(session)分配变量,然后使用它。在代码后台:SESSION.START(); SESSION["PjTitle"]=PrgTtile; 然后在aspx中使用:<%= SESSION["PjTitle"] %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接