aspx文件不包含函数的定义,该定义位于已连接的aspx.cs文件中

本文关键字:aspx 文件 定义 连接 cs 包含 函数 | 更新日期: 2023-09-27 18:12:46

我试图点击一个按钮,但我得到了

"ASP.views_home_index_aspx"不包含的定义"btnCreateOrder_Click"和无扩展方法"btnCCreateOrder_Click'"接受"ASP.views_home_index_aspx"类型的第一个参数可能被找到(您是否缺少使用指令或程序集引用?(

我的代码:

Index.aspx:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" AutoEventWireup="true" CodeBehind="Index.aspx.cs" %>
*THERE IS A COMMENT ABOUT THE INHERIT NEAR THE END OF MY POST*
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: ViewData["Message"] %></h2>
    <table id="productTable">
    
    </table>
    <asp:Label ID="testMessage" runat="server" Text="fail"></asp:Label>
    <p>
        To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
    </p>
    <asp:Button ID="btnCreateOrder" runat="server" Text="Create Order" onclick="btnCreateOrder_Click" />
</asp:Content>

Index.aspx.cs:

using System;
using System.Web;
using System.Web.UI;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using System.Xml;
using System.Linq;
namespace MyProject.Views.Home
{
    public partial class Index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
    {
       
        System.Diagnostics.Debug.Write("Testing");
        XmlTextReader reader = new XmlTextReader("data/products.xml");
        while (reader.Read())
        {
            System.Diagnostics.Debug.Write(reader.Name);
        }

        int numRows = 21;
        int numCells = 4;
        for (int rowNum = 0; rowNum < numRows; rowNum++)
        {
            TableCell cel = new TableCell();
        }
    }
    public void btnCreateOrder_Click(object sender, EventArgs e)
    {
       System.Diagnostics.Debug.Write("Testing");
    }
}

半相关的一点是,我也无法在页面加载时运行Page_Load。(因此称为调试"测试"(。

继承评论有人建议我将继承改为MyProject.Views.Home.Index,但我需要System.Web.Mvc.ViewPage来处理Mvc布局,如果没有它,我会得到:

System.InvalidOperationException:处的视图"~/Views/Home/Index.aspx"必须派生自ViewPage,ViewPage、ViewUserControl或ViewUserControl。

所以。。。是的,除非我应该把我的函数放在其他地方,比如Controllers文件中(我是Visual Studio的新手(,不知道该怎么办。

我已经看到改变继承可以修复它,但如果我将其设置为正确的文件指令,它会破坏它(MyProject.Views.Home会这样做(,它会返回

"无法加载类型"MyProject.Views.Home";

所以不确定那里发生了什么。除此之外,是的,它们在同一个文件夹中,是的它们被附加在一起,很明显,它被设置为其代码绑定。

aspx文件不包含函数的定义,该定义位于已连接的aspx.cs文件中

页面的Inherits属性中有错误的值。类背后的实际代码应该在那里:

Inherits="MyProject.Views.Home.Index"

您的Index.aspx页面似乎没有连接到使用CodeBehind文件中使用的同一类。

正在尝试将Index.aspx中的Inherits属性从System.Web.Mvc.ViewPage更改为MyProject.Views.Home.Index

您的页面正在继承System.Web.Mvc.ViewPage,而它应该是MyProject.Views.Home.Index

将.aspx页面上的整行更改为

<%@ Page Language="C#" 
MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="MyProject.Views.Home.Index" 
AutoEventWireup="true" 
CodeBehind="Index.aspx.cs" %>