为什么我不能从ASP.NET中的代码隐藏文件访问方法?

时间:2017-08-26 10:12:03

标签: c# asp.net

将鼠标悬停在方法签名上时出现

错误: Error when hovering over method signature

尝试“无需调试启动”后出现

错误消息: Error message after trying to "Start without debug"

我已经检查了所有内容,CodeBehind和Inherits属性,所以真的不知道是什么原因导致了这个问题。这是一个教科书的例子,相应地做了一切,我曾经遇到过这个问题,但是不记得我是如何解决它的,但它确实是一个错误的东西,只是重写整个代码而且它有效。谢谢你的帮助。

“GetProducts()名称在当前上下文中不存在”

这是我的Listings.aspx文件的标题:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Listings.aspx.cs" Inherits="SportsStore.Pages.Listings" %>

我想从代码隐藏文件中访问GetProducts()方法。

<form id="form1" runat="server">
        <div>
            <% foreach (SportsStore.Models.Product item in GetProducts()) {
                    ...
                } %>
        </div>
</form>

这是Listings.aspx.cs文件:

namespace SportsStore.Pages {
    public partial class Listings : System.Web.UI.Page {

        private Repository repo = new Repository();

        protected IEnumerable<Product> GetProducts() {
            return repo.Products;
        }
}

2 个答案:

答案 0 :(得分:0)

我终于找到了问题的根源,我不得不将Repository类中的lambda表达式public IEnumerable<Product> Products { get => context.Products; }重新编写为常规get { return context.Products; }表达式。但仍然不明白为什么会产生巨大的差异。

public class Repository {
        private EFDbContext context = new EFDbContext();

        public IEnumerable<Product> Products {
            get {
                return context.Products;
            }
        }
}

答案 1 :(得分:-1)

最好的办法是使用转发器控件,并将get产品的结果绑定到转发器的数据源,然后处理数据绑定事件。转发器控制api有很多例子。它也比使用您正在使用的迭代方法更安全一些。尝试使用这篇文章

https://msdn.microsoft.com/en-us/library/x8f2zez5.aspx

但是,这个论坛有一些链接可能有助于您尝试做的事情。

https://forums.asp.net/t/1139381.aspx?what+are+these+special+tags+and+