- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 ASP.net webform 项目,当我有一个 protected
或 public
方法时,我可以从我在 aspx 中的内联代码调用它们,但我不能调用私有(private)
方法。为什么?它的行为类似于 inheritance 类。与继承有关吗?
我的 ASPX:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewFamilyTree.aspx.cs" Inherits="Mobini.WebForms.ViewFamilyTree" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>
<%= GetHelloWorlds_Protected() %> <%-- Works --%>
<%= GetHelloWorlds_Public() %> <%-- Works --%>
<%= GetHelloWorlds_Private() %> <%-- Error: is inaccessible due to its protection level --%>
</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>
C#代码:
namespace Mobini.WebForms
{
public partial class ViewFamilyTree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private string GetHelloWorlds_Private()
{
return "Hello Worlds";
}
protected string GetHelloWorlds_Protected()
{
return "Hello Worlds";
}
public string GetHelloWorlds_Public()
{
return "Hello Worlds";
}
}
}
最佳答案
Why we only have access to Protected and Public methods in aspx or ascx?
对您的问题的简单回答是:是的,这是因为继承。由于在 aspx 文件中,有一个指令指定要继承的类,(通常是代码隐藏类)
这就引出了你的第二个问题:
But is an aspx file a class?
是的。在编译时,将为aspx
文件生成一个类。在 ASP.Net 2.0 的原始实现中,aspx
类和代码隐藏类是相同的部分类,如 winform .但后来由于灵 active 而改变了。
See: Codebehind and Compilation in ASP.NET 2.0
At this point, you may be wondering why the ASP.NET team bothered to use inheritance at all with this new codebehind model. ASP.NET could easily generate all of the control variable declarations in addition to the rendering methods from the .aspx file as a partial class which could then be merged with your simplified codebehind class. This is exactly how Windows Forms works in the .NET Framework 2.0. All of the designer-generated code is placed into a sibling partial class which is then merged with your application logic and event handlers into a single Form-derived class, creating a clean separation between machine-generated code and developer code without resorting to inheritance.
Well, it turns out that the original implementation of codebehind in ASP.NET 2.0 did exactly this—the codebehind class was just a partial class that was merged with the parsed .aspx file class definition. It was simple and effective, but unfortunately, not flexible enough. The problem with this model was that it was no longer possible to deploy the codebehind files in precompiled binary assemblies along with intact .aspx files since they now had to be compiled at the same time (a restriction when using partial classes is that all partial pieces of a class must be merged during a single compilation, and class definitions cannot span assemblies). This restriction was unacceptable to many developers as they were already used to being able to deploy binary codebehind assemblies along with intact .aspx files which could then be updated in place without having to recompile. This is, in fact, the exact model used by default in Visual Studio .NET 2003, and is thus very prevalent in practice.
As a result of reintroducing the inheritance model and shifting the partial class into the base class, .aspx files can now be deployed and compiled independently from the codebehind class. To complete the picture, you need some way to generate the sibling partial classes containing control variable declarations during compilation or deployment since this was always done in the past on demand in response to requests. Enter the ASP.NET compiler.
关于c# - 为什么我们只能访问 aspx 或 ascx 中的 Protected 和 Public 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383682/
我有两个 .ascx 文件,一个被加载到另一个 .ascx 控件中的占位符中。 所以我有: 家长控制 ->子控件 我想从 ChildControl 访问 ParentControl 以获取变量数据。
我正在为该站点开发第二语言支持。所以我为现有的 ascx.cs 和 aspx.cs 制作了重复的 .ascx 和 .aspx 文件 大多数时候一切正常..但突然间我得到: Type 'ctrl_xxx
我在这样的 ascx 文件中的 FormView 中有一个 asp: 文本框> 但在代码隐藏 ascx.cs 文件中,我无法从文本框中检索值 string name2 = Request
我想创建一个用于分页的用户控件。 如何从 usercontrol.ascx.cs 访问 usercontrol.ascx 中的属性? usercontrol.ascx.cs 中的属性: ///
这个想法是,这个 div 包含来自客户的报价,该报价是通过随机获取函数从服务器检索的,每隔几秒就会运行一个 jQuery 淡出该报价并显示另一个报价。 这是我的 .ascx 中的 Div 代码: "
我在面试中被问到一个问题,我们可以在 aspx 或 ascx 页面中访问分别在 aspx.cs 或 ascx.cs 页面中声明的公开声明的变量。 最佳答案 是的,您可以,在 ASPX 页面中您可以:
我有一个 UserControl (ascx),根据用户的凭据,它将加载另一个 UserControl (ascx)。当前要加载的控件,包含一个特殊的导航菜单。 我正在使用这段代码: UserCont
将事件从用户控件传递到父控件/页面的最佳做法是什么我想做类似的事情: MyPage.aspx: MyUserControl.ascx.cs: public partial class MyUs
我有一个基于 ASCX 的元素,在 IE7 中有时似乎会丢失 CSS 样式。每隔一段时间,ASCX 的某些部分会突然不呈现任何样式以检查信息行。这种情况不一致。每天大约只有2到3次。我不能总是重现这个
我在 ascx-Control 中有一个包含一些行的表格。 如何为一行添加悬停效果以更改背景颜色或字体颜色... 谢谢 最佳答案 如果没有 JavaScript/jQuery,您可以使用纯 CSS..
我想将一个 rsionbuttonlist 添加到我的 ascx web 控件中。我一直收到一个错误,需要将 radionbuttonlist 放在一个标签中。有没有解决的办法? "
在本次演示中,使用了接口(interface),在网页动态加载用户控件,并使用JQuery为来把网页处理的值传给用户控件。 在面向编程中,较喜欢使用接口,认为它能为不同对象之间处理到相同的行为。
使用 SDL Tridion 2011 SP1 发布动态组件演示文稿时,我主要使用 REL 作为输出格式,但是我现在想要发布包含 ASP.NET 控件标记的 DCP。因此,我将模板的输出格式更改为 A
最近我们从 Tridion 5.3 升级到了 Tridion 2011 SP1。 在我们现有的实现中,我们有各种动态组件模板。少数 CT 的输出格式为 ASCX Web 控制,少数 CT 的输出格式为
我设计了一个ascx控件(我在这个问题中将其称为customControl)。该控件只是一系列下拉菜单,每个下拉菜单中都有文本值。下拉菜单位于面板内。 如下: 然后,我将其中一些放在也有文本框的页面上
假设我有 tvo 页面 page1.ascx 和 page2.ascx。两个页面都有代码隐藏(分别为 page1.ascx.cs 和 page2.ascx.cs)。 因此 page1 和 page2
我有一个母版页文件,其中包含 2 个面板控件中的 2 个菜单。我还使用一个控件来检查用户是否登录并获取用户类型。 取决于我想要显示/隐藏面板的类型。控件本身不在母版页中引用,而是通过 CMS 系统动态
我正在尝试创建一个包含两个单选按钮的自定义控件。我正在使用 MVC4 和 ASP.NET...我目前在两个不同的页面中有两组两个单选按钮。在一个页面上,选择单选按钮会打开一个新选项卡,并根据选择显示某
我需要在页面上使用用户控件 (.ascx),它是基于 2 个参数的相关后用户控件: 1. Current post 2. Relation type 页面需要有此控件的 3 个不同实例,每个实例具
我有一个母版页文件,其中包含 2 个面板控件中的 2 个菜单。我还使用一个控件来检查用户是否登录并获取用户类型。 取决于我想要显示/隐藏面板的类型。控件本身不在母版页中引用,而是通过 CMS 系统动态
我是一名优秀的程序员,十分优秀!