【发布时间】:2011-02-01 20:29:43
【问题描述】:
我的 .ascx 文件中有以下代码段:
<%@ Control Language="C#" Inherits="MyCompany.Modules.Discovery.ViewDiscovery"
AutoEventWireup="true" CodeBehind="ViewDiscovery.ascx.cs" %>
<div id="ViewDiscovery_<asp:Literal ID="litModuleId" runat="server" />"></div>
<script type="text/javascript" src="<asp:Literal ID="litControlPath" runat="server" />carousel-jquery.js"></script>
<script type="text/javascript" src="<asp:Literal ID="litControlPath2" runat="server" />discovery-widget.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var myData = <asp:Literal ID="litContent" runat="server" />;
var myDiscovery = discovery('<asp:Literal ID="litControlPath3" runat="server" />');
myDiscovery.json(myData);
myDiscovery.init("ViewDiscovery_<asp:Literal ID="litModuleId2" runat="server" />");
});
</script>
正如您可能能够从语法突出显示(或者更确切地说,它的损坏程度)中推断出的那样,如果我尝试使用此 .ascx 文件编译我的 CodeBehind 文件,它会严重失败,因为它无法识别各种文字我在文件中撒了一些东西,因此我的代码隐藏文件无法编译。我必须将它们从它们的位置中删除,将它们放在文件的末尾,不受页面中它们的上下文的影响,编译,然后恢复到原始版本。
当然有更好的方法将文字放入页面中。
编辑:当我打包我的模块并将其安装在另一个 DotNetNuke 实例上时(只要我在编译它时执行该 rigamarole,它就可以在本地正常工作),它会引发错误:
DotNetNuke.Services.Exceptions.ModuleLoadException: The tag contains duplicate 'ID' attributes
相关,还是这里有其他问题?
编辑:我尝试使用<%=variable %>,但没有得到任何结果。这是我的代码隐藏片段:
namespace MyCompany.Modules.Discovery
{
partial class ViewDiscovery : PortalModuleBase, IActionable
{
public string strContent = "Insert Content Here!";
protected void Page_Load(object sender, System.EventArgs e)
{
// Do stuff here!
this.strContent = "My content!";
}
}
}
如果我在我的 ascx 文件中执行此操作:
<%@ Control Language="C#" Inherits="MyCompany.Modules.Discovery.ViewDiscovery"
AutoEventWireup="true" CodeBehind="ViewDiscovery.ascx.cs" %>
<%=this.strContent %>
...我的页面上没有显示任何内容。查看 .ascx 文件中“this”的上下文会发现它属于“ASP.viewdiscovery_ascx”类型,而不是我预期的“ViewDiscovery”。
【问题讨论】: