2011-02-01 6 views
0

を防止し、私は私た.ascxファイルに次のsnippit持っている:あなたは(それがどのように壊れた、というか)構文の強調表示から推測することができるかもしれないとWebフォーム:た.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> 

を私がCodeBehindファイルをこの.ascxファイルでコンパイルしようとすると、ファイル内に振りかざされているさまざまなリテラルが認識されず、コードビハインドファイルがコンパイルに失敗するため、ひどく失敗します。私は彼らの位置からそれらを削除し、ページの文脈に妨害されないようにファイルの最後に置いて、コンパイルして元のバージョンに戻す必要があります。

確かに、ページにリテラルを入れることについてのより良い方法があります。

EDIT:

DotNetNuke.Services.Exceptions.ModuleLoadException: The tag contains duplicate 'ID' attributes 
:私は私のモジュールをパッケージ化し、DotNetNukeのの別のインスタンスにインストールする場合(それは限り、私はそれをコンパイルすることをrigamaroleがそうであるように、ローカルに正常に動作します)
、それはエラーをスローします

関連する、またはここに他の問題がありますか?

EDIT:私は<%=variable %>を使用しようとしましたが、どこにもいません。私はその後、私のASCXファイルでこれを行う場合は

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!"; 
     } 
    } 
} 

<%@ Control Language="C#" Inherits="MyCompany.Modules.Discovery.ViewDiscovery" 
    AutoEventWireup="true" CodeBehind="ViewDiscovery.ascx.cs" %> 

<%=this.strContent %> 

...何も私のページ上に表示されなかっこれは私の分離コードからsnippitです。 .ascxファイルの 'this'の文脈でのピークは、私が期待したように "ASP.viewdiscovery_ascx"ではなく "ViewDiscovery"であることを示しています。

答えて

1

私はDNNを使用しませんでしたが、あなたがやろうとしていることについて、インライン式が機能するはずです。あなたのコードビハインドで

は、いくつかのプロパティ(またはメソッド)を持っている:

protected string ModuleId {get {return "1"; }} 
protected string ModuleId2 {get {return "2"; }} 
protected string ControlPath {get { return "path1/"; }} 
protected string ControlPath2 {get {return "path2/"; }} 
protected string Content {get {return "somecontent"; }} 
protected string ControlPath3 {get {return "path3/"; }} 

次のようにあなたがそれらを使用することができます。

<div id="ViewDiscovery_1" ></div> 
<script type="text/javascript" src="path1/carousel-jquery.js"></script> 
<script type="text/javascript" src="path2/discovery-widget.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var myData = somecontent; 
     var myDiscovery = discovery('path3/'); 
     myDiscovery.json(myData); 
     myDiscovery.init("ViewDiscovery_2"); 
    }); 
</script> 

<div id="ViewDiscovery_<%= ModuleId %>" ></div> 
<script type="text/javascript" src="<%= ControlPath %>carousel-jquery.js"></script> 
<script type="text/javascript" src="<%= ControlPath2 %>discovery-widget.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     var myData = <%= Content %>; 
     var myDiscovery = discovery('<%= ControlPath3 %>'); 
     myDiscovery.json(myData); 
     myDiscovery.init("ViewDiscovery_<%= ModuleId2 %>"); 
    }); 
</script> 

は、次のHTMLを生成する必要があります

+0

これは私が最初に試したことの一つです。愛はない。私のオリジナルのポストを見てください。 – AlexMax

+0

ページのHTMLを見たとき、それらのプレースホルダーは埋められていませんでしたか?あなたが言及したクラスタイプ - "ASP.viewdiscovery_ascx"はasp.netによって生成され、何も破壊してはいけません。 (必要に応じてこれを上書きすることができます) – David

+0

私はこれを実行したときに生成されたHTMLを表示するために私の答えを更新しました。 – David

関連する問題