2010-06-10 11 views
8

नोट में परिवर्तित हो गए हैं: शायद यह एक डबल प्रश्न होगा, लेकिन चूंकि मुझे स्पष्ट उत्तर नहीं मिला है, इसलिए मैं इसे वैसे भी पूछ रहा हूं।एएसपी.नेट एकल उद्धरण '

एएसपी.नेट में मैं चेकबॉक्स की ऑनक्लिक घटना में कुछ जावास्क्रिप्ट जोड़ना चाहता हूं। मैं इस मामले को सरल बना दिया है:

<asp:CheckBox ID="TestCheckBox" runat="server" onclick="alert('test');" Text="Test" /> 

जिसके परिणामस्वरूप एचटीएमएल इस प्रकार है:

<input id="MainContainer_TestCheckBox" type="checkbox" name="ctl00$MainContainer$TestCheckBox" onclick="alert(&#39;test&#39;);" /><label for="MainContainer_TestCheckBox">Test</label> 

क्या विशेष रूप से मुझे परेशान है कि एक एकल बोली 'स्वचालित रूप से' 'में परिवर्तित हो जाती & # 39; '। अगर मैं मार्कअप में ऑनक्लिक को छोड़ देता हूं और इसे पेज_लोड में असाइन करता हूं, तो HTML में सटीक समान परिणाम दिखाए जाते हैं।

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.TestCheckBox.Attributes["onclick"] = "alert('test');"; 
} 

किसी को भी क्या हो रहा है इसके बारे में कोई जानकारी मिली है? या कैसे इसे ठीक/ठीक करने के लिए?

+2

क्यों काम करता है? वे जरूरी नहीं हैं, लेकिन यह वैध HTML है और ठीक काम करता है। –

उत्तर

1

किसी और मामले में किसी को इस सवाल पाता है, इस तरह से मैं मान इनकोडिंग HTML बिना एक कस्टम नियंत्रण से गुण इंजेक्षन करने में सक्षम था है। यह एक बटन का एक उदाहरण है जो एक बटन प्रेस एक्शन की पुष्टि करने के लिए एसिंक फ़ंक्शन पर कॉल करता है।

कुंजी का उपयोग करने के लिए लेखक है। AddAttribute() जिसमें फ़्लैग HTMLEncode चरण को अक्षम करने के लिए है। ऐसा लगता है कि आप किस एएसपीनेट का उपयोग कर रहे हैं, इस पर निर्भर है। यह .NET 4.6.1

public class ConfirmationLinkButton : LinkButton 
{ 
    protected override void AddAttributesToRender(HtmlTextWriter writer) 
    { 
     base.AddAttributesToRender(writer); 
     string script = "confirmAsync('" + ConfirmationMessage.Replace("'", "\\'") + "', " + Callback() + ");" + 
         "return false;"; 
     writer.AddAttribute(HtmlTextWriterAttribute.Onclick, script, false); 
    } 

    private string Callback() 
    { 
     return "(data) => { if (data===true) {" + Page.ClientScript.GetPostBackEventReference(this, "") + "}}"; 
    } 

    public string ConfirmationMessage { get; set; } 
} 
1

सभी एएसपी चेक बॉक्स नियंत्रण वैध विशेषता के रूप में नहीं चलते हैं।

1- आप मूल्य सर्वर साइड की जरूरत नहीं है, तो आप सिर्फ एक सामान्य चेक बॉक्स के बजाय डाल सकते हैं एएसपी चेक बॉक्स की:

तो आपको दो काम कर सकते हैं।

2- यदि आपको मूल्य सर्वर पक्ष की आवश्यकता है, तो अपने चेक बॉक्स पर runat = "server" विशेषता और स्थान और आईडी जोड़ें ताकि आप इसे अपने कोड में संदर्भित कर सकें।

<input type="checkbox" id="chk1" onclick="alert('hello');" runat="server" /> 
7

जब हम .NET 3.5 से .NET 4.0 तक प्रोजेक्ट माइग्रेट करते हैं तो हमारे पास विशेषता मानों में सिंगल कोट्स के साथ एक ही समस्या थी। यह विशेषता मानों में सभी एकल उद्धरण &39; में परिवर्तित करता है। तो हम वापस .NET 3.5 पर गए।

यह एक .NET 4.0 चीज है। आप इस समस्या here के बारे में अधिक पढ़ सकते हैं।

+0

धन्यवाद! यह थोड़ा और साफ़ करता है। –

0

मैंने हाल ही में इसमें प्रवेश किया जहां डेटाबेस के बाद एक नियंत्रण अद्यतन किया जा रहा था। ठीक शामिल पुनरावर्तक के लिए OnItemDatabound सर्वर घटना के दौरान onchange जावास्क्रिप्ट को जोड़ने के लिए किया गया था:

protected void rptTarifDetails_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { TextBox proposedPrice = e.Item.FindControl("txtProposedUnitSell") as TextBox; 
     proposedPrice.Attributes.Add("onchange", "CalcCommissionSingleLine(this,'None','" + ((Repeater)sender).ClientID + "', false, " + rowCount.Value + ")"); 
0

मैं एक ही मुद्दे का सामना करना पड़ रहा था। मैंने अंततः खोज की पृष्ठ को एप्लिकेशन/xhtml + xm में बदलकर हल किया।

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" Debug="true" ContentType="application/xhtml+xm" %> 

आशा, इस जानकारी से आपको मदद मिलेगी ..

संबंधित मुद्दे