【发布时间】:2016-09-01 05:12:56
【问题描述】:
请帮助我解决以下问题。我很难过。我有一个名为“one”的文件夹,里面只有 2 个文件。第一个是DemostrationOne.aspx:
<%@ Page Language="C#" Title="Demo" CodeBehind="DemonstrationOne.aspx.cs" AutoEventWireup="true" Async="true" %>
<head runat="server">
<title><%: Title %></title>
</head>
<body>
<form id="sayHello" runat="server">
<div>
<asp:Button ID="doSomething" OnClick="DemonstrateMe" Text="Show Label" runat="server"></asp:Button>
<asp:PlaceHolder runat="server" ID="showLiteral" Visible="false">
<p><asp:Literal ID="HelloWorldLabel" runat="server"></asp:Literal></p></asp:PlaceHolder>
</div>
</form>
</body>
第二个当然是DemonstrationOne.aspx.cs:
using System;
using System.Web.UI;
namespace OneDemonstration
{
public partial class DemonstrateMe
{
protected global::System.Web.UI.WebControls.Literal HelloWorldLabel;
protected global::System.Web.UI.WebControls.PlaceHolder showLiteral;
}
public partial class DemonstrateMe : Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
public void sHowHelloWorldLabel(object sender, EventArgs e)
{
showLiteral.Visible = true;
HelloWorldLabel.Text = "Hello World!";
}
}
}
我去visual studio并点击文件>打开>网站(我不从向导自动生成它)然后点击运行。这给了我错误信息:
“ASP.demonstrationone_aspx”不包含“DemonstrateMe”的定义,并且没有扩展方法“DemonstrateMe”接受 可以找到“ASP.demonstrationone_aspx”类型的第一个参数(是 您缺少 using 指令或程序集引用?)
我想指出,我是一个初学者,甚至在 aspx Web 表单中显示“Hello World”标签时遇到问题(没有自动生成的向导)。我认为它只有由 Visual Studio 生成才有效?
请帮忙。
【问题讨论】:
-
DemonstrateMe是一个类,而不是一个方法。OnClick需要指向一个方法。 -
旁白:让你的文件与你的类名匹配会更清楚。并且您的处理程序目前指向一个类而不是该类中的方法,因此存在问题。
-
嗨@ManoDestra 我有文件名匹配类名但我很困惑所以我改变了它以确保像“demo”这样的词不是c#语言的一部分。
-
您可以改为重构类,这会自动为您更改文件名和类名。而且“demo”不是C#的保留字。你可以将它用于测试类,没问题:)
-
@Rookie:您可能应该从学习教程开始。