2009-07-21 5 views
8

मैं एएसपीनेट उपयोगकर्ता नियंत्रण लिख रहा हूं। इसमें एक प्रॉपर्टी है, आगे रीडिंग पेज, और इसके लिए दो नियंत्रण हैं: ऑब्जेक्टडाटासोर्स और रिपेटर। रिपेटर के अंदर मैं एक href संपत्ति सेट के साथ FurtherReadingPage + "?id=" + Eval("Id") जैसे कुछ के साथ एक हाइपरलिंक प्रदर्शित करना चाहता हूं। मुझे नहीं पता कि पेज के मार्कअप के अंदर इसे कैसे किया जाए। मैं अकेले <% Eval("Id") %> या <% Response.Write(FurtherReadingPage + "?id=") %> का उपयोग कर सकता हूं लेकिन मुझे नहीं पता कि उन्हें कैसे मिलाएं।एएसपीनेट पेज पर <% ... %> टैग के अंदर सी # कोड का उपयोग कैसे करें?

उत्तर

3

आप इस तरह यह कर सकते हैं -

<asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id") %>' /> 
1

इस (कड़ी के रूप में उदाहरण) का प्रयास करें: <a href='<%=FurtherReadingPage %>?id=<%# Eval("Id") %>'>My link</a>

+0

<% = और <% #, जिसमें समस्याओं पैदा करेगा ज्यादातर परिस्थितियों में। <% = पुनरावर्तक के अंदर काम नहीं करेगा और <% # तब तक काम नहीं करेगा जब तक कि डेटाबिंड() को कॉल नहीं किया जाता है। – Keith

+0

@ केथ: आप गलत हैं। मैंने दोहराए जाने के लिए दोहराने के अंदर <%= "Test" %> की कोशिश की और यह ठीक काम करता है। <% # केवल डाटाबेस() के साथ काम करता है जो मामला है। – Sergio

+0

क्षमा करें, हां, <% = किसी भी संग्रह शैली नियंत्रण वाले उपरोक्त नियंत्रण पदानुक्रम के आधार पर पुनरावर्तकों में काम कर सकता है। असल में <% = आगे रीडिंग पेज%> कभी-कभी पुनरावर्तक में काम करेगा, जबकि <% # आगे रीडिंग पेज%> हमेशा होगा। – Keith

3

इस प्रयास करें:

<%#String.Format("{0}?id={1}",FurtherReadingPage, Id)%> 
17

आप अलग अलग टैग की एक जोड़ी है:

<% अंदर कोड निष्पादित करता है:

<% int id = int.Parse(Request["id"]); %> 

<%= अंदर कोड बाहर लिखते हैं:

<%=id %> <!-- note no ; --> 

<!-- this is shorthand for: --> 
<% Response.Write(id); %> 

जब एक पृष्ठ पर प्रदान की इन दोनों सामान्य प्रवाह को तोड़ने, उदाहरण के लिए यदि आप Asp.net <head runat="server"> आप करेंगे एक सामान्य में उन्हें इस्तेमाल समस्याएं पाएं

<%# डेटा बाइंडिंग:

<%# Eval("id") %> 

यह आपको कि Asp.net WebForms एक संग्रह (बजाय शाब्दिक नियंत्रण है कि आप के साथ <%= उपयोग कर सकते हैं) के रूप में प्रस्तुत करना नियंत्रण के लिए बाइंडिंग निर्दिष्ट कर सकते हैं, उदाहरण के लिए:

<!-- this could be inside a repeater or another control --> 
<asp:Hyperlink runat="server" ID="demo" 
    NavigateUrl="page.aspx?id=<%# Eval("id") %>" /> 

<% //without this bind the <%# will be ignored 
    void Page_Load(object sender, EventArgs e) { 
     demo.DataBind(); 
     //or 
     repeaterWithManyLinks.DataBind(); 
    } 
%> 

अपने विशिष्ट मामले के लिए आप या तो:

  • के साथ एक पुनरावर्तक और <%# Eval(...) %>repeater.DataBind();

या

  • उपयोग एक foreach पाश (<% foreach(... %>) के साथ प्रयोग करें <%= ... %>
यह घोला जा सकता है
संबंधित मुद्दे