2013-04-12 89 views
1

將代碼中的href標記綁定在後面的代碼不起作用時。這是我的aspx代碼。當我直接將<a>標記放在aspx上時,它正在工作,而當我通過Response.write進行讀取時,它讀取〜不是根目錄。在href中,從後面的代碼綁定時,〜不起作用

<% Response.Write("<a id=\"A1\" runat=\"server\" class=\"menuItem\" href=\"~/HR/Emp/EmpDetails.aspx?mid=167\">My PIPs</a> "); %> 

<a id="A1" runat="server" class="menuItem" href="~/HR/Emp/EmpDetails.aspx?mid=167">My PIPs</a> 

通過文字的綁定也它不工作

Literal.text = "<a id=\"A1\" runat=\"server\" class=\"menuItem\" href=\"~/HR/Emp/EmpDetails.aspx?mid=167\">My PIPs</a> "; 

請這方面的幫助。

these are the HTML tags 
<ul id="jMenu"> 
    <li> 
     <a runat="server" class="fNiv" href="~\Default.aspx?mid=1&">Home</a> 
     </li> 
    <li> 
     <a runat="server" class="fNiv" href="">Human Resources</a> 
    <ul> 
     <li class="arrow" /> 
     <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\PIPWorkFlow.aspx?mid=166">Performance Improvement Plan (PIP)</a> 
    <ul> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\PIPWorkFlow.aspx?mid=171">Data Protection Statement</a> 
     </li> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\EmpPIPDetails.aspx?mid=167">My PIPs</a> 
     </li> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\PIPHome.aspx?mid=168">Team PIPs</a> 
     </li> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\HRPIPHistory.aspx?mid=169">Employee PIPs</a> 
     </li> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\AppraisalRatingUpload.aspx?mid=170">Upload Appraisal Ratings</a> 
     </li> 
    <li> 
     <a runat="server" class="menuItem" href="~\HR\EMP\PIPRoleAssignment.aspx?mid=472">PIP Spoc Role Assignment</a> 
     </li> 
     </ul> 
     </li> 
     </ul> 
     </li> 
    <li> 
     <a runat="server" class="fNiv" href="~\ContactUs.aspx?mid=39">Contact Us</a> 
     </li> 
     </ul> 

這些都是HTML標籤......如果我們結合這些標記與文字或DIV或TD ......他們正在閱讀〜跡象,因爲這樣... 如果我直接在HTML中把這些標籤它的工作完美無缺

+0

把您的代碼放在這裏。 –

+0

請提供完整的代碼.. –

+1

顯示您正在談論的代碼將有助於 – nunespascal

回答

3

Response.WriteLiteral.Text輸出無論你給他們沒有處理。

這意味着無論你給這些方法/財產將被逐字輸出。將不會發生URL解析並且runat=server屬性沒有意義。

您可以使用Control.ResolveClientUrl() method來自己生成鏈接,或者將鏈接作爲代碼隱藏中的服務器控件來操作。

選項1

// this line is fine 
string url = ResolveClientUrl("~/some-url/foo.aspx"); 

// this line is quite ugly, but should work 
var lit = new Literal { Text = "<a href='" + url + "'>a link</a>" }; 

// add it the page/control's control hierarchy 
this.Controls.Add(lit); 

選項2

// instantiate the control dynamically 
// URL resolution is done automatically 
var lnk = new HtmlAnchor { HRef = "~/some-url/foo.aspx" }; 

// add it the page/control's control hierarchy 
this.Controls.Add(lnk); 

選項3

比方說,你必須解決的一個字符串,而不是控制層次(如根據評論)。這並不理想,但如果字符串中的URL與應用程序根目錄相關,則有可能。

// resolve the application root 
string root = ResolveClientUrl("~/"); 

// string of raw HTML 
string html = "<a href=\"~/HR/Emp/EmpDetails.aspx?mid=167\">My PIPs</a>"; 

// replace the urls with a resolved version 
// this is very simplistic...a proper parser would be more reliable 
html = html.Replace("~/", root + "/"); 

// output as desired 
Response.Write(html); 
+0

感謝您的快速回復。實際上這個Html內容是動態來自XSLT的。我們使用JMenu進行數據庫驅動的菜單。將XSLT轉換爲HTML標記後... href不起作用標記 – Vandana

+0

您的HTML中是否包含XSLT中的「〜/」?或者你稍後添加? –

+0

從XSLT轉換中獲取這些html標籤

  • RBT Report
  • Vandana

    相關問題