我正在尝试创建一个可以由我们的前端开发人员模板化的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
类的公共属性。 在我的模板子文件夹中,我有以下 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()
但似乎没有任何效果。
关于我如何实现这一目标的任何想法?
在 ascx 文件中将GetOption1
更改为GetOption1Value