2012-06-06 43 views
0

我試圖實現解決方案來更新用戶控件顯示的內容,而無需重新發布用戶控件本身。 UC從外部文件獲取xml作爲其內容,而不是將內容存儲在控件中,因此xml是重新發布的而不是UC。在運行時從XML中檢索和處理服務器端值

問題是我還需要包含內聯變量的內容,例如<%= myvariable%>。有沒有辦法檢索xml,然後在運行時運行它,而不是將其視爲文本?

以下僅僅是一個基本的例子,僅涉及這個問題的基礎知識,並不是頁面上代碼的完整範圍,但希望這足以說明我所要求的內容。而不僅僅是「Response.Write(xmlcontent);」有沒有什麼辦法可以讓我的xml獲取運行的值,就好像它在運行時對頁面是「本地的」,並處理內聯變量?

用戶控制:

<script runat="server"> 
string xmlcontent = ""; 
protected override void OnLoad(EventArgs e) 
{ 
    try 
    { 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(Server.MapPath("/usercontrols/xml/test.xml")); 
     xmlcontent = doc.SelectSingleNode("content").InnerText; 
    } 

    catch 
    { 

    } 
} 

</script> 

<%if (!string.IsNullOrEmpty(xmlcontent)) 

{ 
    Response.Write(xmlcontent); 
} %> 

XML:

<content> 
<![CDATA[<div>This is the content. The next word is a C# variable <% =variabletest %>.</div>]]> 
</content> 

回答

0

試試這個:

<script runat="server"> 
     string xmlcontent = ""; 
     protected override void OnLoad(EventArgs e) 
     { 
      try 
      { 
       System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
       doc.Load(Server.MapPath("/usercontrols/xml/test.xml")); 
       ltrl.Text = String.Format(doc.SelectSingleNode("content").InnerText, variabletest); 
      } 

      catch (Exception ex) 
      { 
       ltrl.Text = ex.Message; 
      } 
     } 
</script> 


<div> 
    <asp:Literal runat="server" ID="ltrl" /> 
</div> 

可以使用的String.Format傳遞VAR值,並與XML進行合併內容。定義一個文字控件將內容寫入頁面。

+0

我給了這個鏡頭,但對我來說,它仍然處理<%= variabletest%>作爲文本,而不是作爲代碼處理它。 – user1408652

+0

對不起,我忘了提及,您必須將「<%= variabletest%>」更改爲「{0}」,以便用每個「{0}」的替代值替換variabletest的值 – rolivares

相關問題