我正在尝试制作一个 ascx 控件,我们的前端开发人员只需制作一个新的 .ascx 并在该实例中指向该特定的 .ascx 即可对其进行模板化。但是,我在访问共享代码隐藏场景中的属性时遇到了问题。
我有以下共享的代码
public partial class TemplateCodeBehind : TemplateControlBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
// Ascx Available properties
public string GetOption1Value { get { return Option1; } }
public string GetOption2Value { get { return Option2; } }
public string GetOption3Value { get { return Option3; } }
public string GetOption4Value { get { return Option4; } }
}
请注意,返回的那些选项是TemplateControlBase
类的公共属性。在我的 Templates 子文件夹中,我有以下 ascx
<%@ Control Language="C#" AutoEventWireup="false" CodeBehind="../TemplateCodeBehind.ascx.cs" Inherits="MyNamespace.JqueryTemplates.TemplateCodeBehind" %>
<%@ Import Namespace="MyNamespace.JqueryTemplates" %>
<div>
Option1: <%= GetOption1 %>
</div>
这编译得很好,但是当我尝试加载我的测试 ascx 时,我收到以下错误
发生了错误。DotNetNuke.Services.Exceptions.PageLoadException:c:\Projects\DNN-Dev\Website\DesktopModules\Module.JqueryTemplates\Templates\Test.ascx(5):错误 CS0103:当前上下文中不存在名称“GetOption1”
我曾尝试更改<%=
为<%#
并打电话Page.Databind()
,但似乎没有任何效果。
关于我如何做到这一点的任何想法?