ASP.NET网站"该名称在当前上下文中不存在"

时间:2017-01-05 20:13:52

标签: c# asp.net

Product.aspx

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1">
   <ItemTemplate>
      <asp:textbox runat="server" ID="quantitytb"></asp:textbox>
      <asp:Button CssClass="addtocart-button" runat="server" Text="Add to cart" ID="addtocartbutton" onclick="addtocartbutton_Click"></asp:Button>

   </ItemTemplate>
</asp:DataList>

Product.aspx.cs

protected void addtocartbutton_Click(object sender, EventArgs e)
{
  quantitytb.Text="1";
}

Product.aspx的第1行

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Product.aspx.cs" Inherits="Product" %>

以上只是我的代码的一小部分。我添加到Product.aspx页面的任何控件都不能在.cs文件中使用。将会出现错误提示&#34;名称&#39;控制名称&#39;在当前上下文中不存在&#34;。字面上尝试了我可以在网上找到的所有解决方案,但无济于事。

请注意,我使用的是ASP.Net空网站,而不是Web应用程序,因此没有designer.cs文件。

1 个答案:

答案 0 :(得分:2)

您无法直接访问quantitytb,因为它位于DataList范围内。与任何数据绑定容器(gridviewrepeaterformview等)类似,您必须定位特定项/行以查找其子控件。如果您的数据列表中包含10个项目,则表示您将有10次quantitytb次出现 - 如果您未指定要定位的是哪一项,则代码将引发错误。

如果您正在尝试修改单击按钮的兄弟文本框,那么您可能正在寻找的是:

protected void addtocartbutton_Click(object sender, EventArgs e)
{
  //Find the button that was clicked
  Button addToCart = (Button)sender;

  //Get the button's parent item, and within that item, look for a textbox called quantitytb
  TextBox quantitytb = (TextBox)addToCart.Parent.FindControl("quantitytb");

  //Set that textbox's text to "1"
  quantitytb.Text="1";
}