[英]Calling C# variable in ASP.NET Webpage
因此,我一直很難在ASP.NET網頁中調用此C#變量。
Employee Title: <asp:DropDownList ID="titles" runat="server" DataSourceID="SqlDataSource1" DataTextField="Title" DataValueField="Title" AutoPostBack="True"></asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LargeEmployeeConnectionString %>" ProviderName="<%$ ConnectionStrings:LargeEmployeeConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [Title] FROM [Employees]"></asp:SqlDataSource>
</div>
<%
string title = "Manager";
if (titles.SelectedItem != null)
{
title = titles.SelectedItem.Value;
}
%>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:LargeEmployeeConnectionString %>" ProviderName="<%$ ConnectionStrings:LargeEmployeeConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [Employees] WHERE ([Title] = ?)">
<SelectParameters>
<asp:Parameter DefaultValue="<%Response.Write(title);%>" Name="Title" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateColumns="true" DataKeyNames="EmployeeID">
</asp:GridView>
如您所見,變量標題在DataSource2的Parameters中被調用。
我使用DefaultValue =“ Manager”測試了此參數功能,這是下拉列表將具有的值之一。 那行得通。
但是我不知道如何使它動態地工作。
我努力了:
<% title %>
<%=title%>
<%Response.write(title);%>
更新:此附加代碼段也不起作用。
<%: title %>
雖然它確實有效,但是我在asp:Parameter標簽之外調用它時卻如此。
這是根據您最近的建議提供的新代碼:
ASP.NET:
<form id="form1" runat="server">
<div>
Employee Title: <asp:DropDownList ID="titles" runat="server" DataSourceID="SqlDataSource1" DataTextField="Title" DataValueField="Title" AutoPostBack="True"></asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:LargeEmployeeConnectionString %>" ProviderName="<%$ ConnectionStrings:LargeEmployeeConnectionString.ProviderName %>" SelectCommand="SELECT DISTINCT [Title] FROM [Employees]"></asp:SqlDataSource>
</div>
<%
string title = "Manager";
if (titles.SelectedItem != null)
{
title = titles.SelectedItem.Value;
Title = title;
}
%>
Title Is: <%=Title%>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:LargeEmployeeConnectionString %>" ProviderName="<%$ ConnectionStrings:LargeEmployeeConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [Employees] WHERE ([Title] = ?)">
<SelectParameters>
<asp:Parameter DefaultValue="<%=Title%>" Name="Title" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateColumns="true" DataKeyNames="EmployeeID">
</asp:GridView>
</form>
C#:
public partial class Part1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public string Title
{
get; set;
}
}
最終解決方案:
<asp:ControlParameter ControlID="titles" DefaultValue="Manager" Name="Title" PropertyName="SelectedValue" Type="String" />
以下任何一種都可以正常工作
<%# title %>
<%: title %>
此外,如果您只是調用Response.write()
那么為什么不直接在您的代碼隱藏( .cs
)文件中調用它呢? 不知道在.aspx
頁中調用它有什么意義。
<div>
Data Is: <%# title %>
</div>
現在,我明白了,如果沒有記錯的話,您的title變量是在方法中聲明的,因此您將無法訪問它,因為它的作用域位於方法塊內。 確保在類級別聲明了該變量。 更好地聲明一個公共屬性以獲得變量訪問,例如
public string Title
{
get; set;
}
在您的方法塊中將其設置為
string title = "Manager";
if (titles.SelectedItem != null)
{
title = titles.SelectedItem.Value;
Title = title;
}
在aspx中然后訪問它
<asp:Parameter DefaultValue="<%=Title%>" Name="Title" Type="String" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.