因此,我一直很难在我的C#网页中调用这个ASP.NET变量。
    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的参数中被调用。
我使用DefaultValue="Manager“测试了这个参数,这是下拉列表中的值之一。起作用了。
但我不知道如何动态地工作。
我试过:
<% title %>
<%=title%>
<%Response.write(title);%>更新:这个额外的代码也不起作用。
<%: title %>虽然当我在asp:参数标记之外调用它时,它确实起作用了。
以下是基于您最新建议的新代码:
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" />发布于 2016-06-24 23:21:59
以下任何一项都应该正常工作。
<%# title %>
<%: title %>此外,如果您只是在调用Response.write(),那么为什么不直接在代码隐藏(.cs)文件中调用它呢?不知道在.aspx页面中调用它有什么意义。
<div>
Data Is: <%# title %>
</div>现在我明白了,如果没有错的话,标题变量是在一个方法中声明的,所以您无法访问它,因为它的作用域结束在方法块中。确保变量是在类级别声明的。最好声明一个公共属性以获得如下所示的变量访问权限
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" />https://stackoverflow.com/questions/38023403
复制相似问题