2010-09-23 13 views
5

में रेडियोबटन सूची के लिए निरंतर सूची सूची सेट करें, मुझे यहां कुछ गलत करना होगा लेकिन मुझे इसे काम करने के लिए एक आसान तरीका नहीं मिल रहा है।एएसपीएक्स

निम्न कोड की कल्पना कीजिए:

<asp:RadioButtonList ID="MyRadioButtonList" runat="server"> 
    <asp:ListItem Value="<%= CompanyName.SystemName.Constants.PaymentFrequency.FREQUENT.ToString() %>" Text="Yes" Selected="True"></asp:ListItem> 
    <asp:ListItem Value="<%= CompanyName.SystemName.Constants.PaymentFrequency.ONCE.ToString() %>" Text="No, Just do this once"></asp:ListItem> 
</asp:RadioButtonList> 

लेकिन यह बयान संकलन नहीं है इससे पहले कि यह पेज बना देता है। इसलिए यदि मुझे इस radiobuttonlist का चयनित मान मिलता है तो इसमें मेरी निरंतर परिभाषा के बजाय "<% = Compan ...%>" जैसे कुछ शामिल हैं।

इसके लिए सही वाक्यविन्यास क्या है?

+0

क्यों आप जहां यह aspx मार्कअप में enum उपयोग करना चाहते हैं एक स्ट्रिंग में परिवर्तित कर दिया गया है? फिर आप आसानी से "फ्रीक्वेंट" और "ONCE" का उपयोग मूल्य के रूप में कर सकते हैं। मुझे लगता है कि एएसपीएक्स से एनम तक पहुंचने के लिए यह संभव नहीं है जब यह किसी अन्य वर्ग/नामस्थान में हो। इसके अतिरिक्त: जब आप मार्कअप में डेटा का मूल्यांकन करना चाहते हैं तो रेडियोबटन सूची पर डेटाबिंड को कॉल करने पर विचार करें। –

+0

1. ये स्थिरांक हैं जो पूरे सिस्टम में उपयोग किए जाते हैं (यह काफी बड़ा है)। इस तरह वे आसानी से प्रबंधनीय हैं। 2. यदि मैं मूल्य संपत्ति को निर्दिष्ट करने के बजाय बस कथन मुद्रित करता हूं तो यह काम करता है। 3. जब आप डेटास्रोत संलग्न करते हैं, तो आप केवल एक सूची डेटाबेस करते हैं, जिसका मैं उपयोग नहीं कर रहा हूं। – Peter

+0

मुझे वही समस्या है! – TinyRacoon

उत्तर

4

मुझे नहीं पता कि वास्तव में (मुझे संदर्भ खोजने में कोई प्रबंधन नहीं हुआ) लेकिन <%= %> सिंटैक्स काम नहीं करता है जब आप एएसपीएक्स मार्क-अप में वैल्यू या टेक्स्ट इटैम का टेक्स्ट सेट करते हैं।

आप इसके बजाय, से कोड-पीछे यह कर सकता है जैसे:

MyRadioButtonList.Items.Add(new ListItem(
    "Yes", CompanyName.SystemName.Constants.PaymentFrequency.FREQUENT.ToString())); 
//... 
+2

वे गलती से इसे या कुछ में रखना भूल गए? यह बेकार है :-) – Peter

+0

यहां एक स्पष्टीकरण है कि यह क्यों काम नहीं करता है: http://stackoverflow.com/a/370263/12484 –

1

तुम सच में स्थिरांक मार्कअप में (कोड में नहीं पीछे स्वीकार किए जाते हैं जवाब के अनुसार) चाहते हैं, ASP.NET 2.0 के बाद से इस किया जा सकता है कस्टम अभिव्यक्तिबिल्डर के साथ किया गया।

पहले, अपने वेब अनुप्रयोग में एक ExpressionBuilder वर्ग बनाने के लिए:

namespace Your.Namespace 
{ 
    [ExpressionPrefix("Code")] 
    public class CodeExpressionBuilder : ExpressionBuilder 
    { 
     public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, 
      object parsedData, ExpressionBuilderContext context) 
     { 
      return new CodeSnippetExpression(entry.Expression); 
     } 
    } 
} 

फिर अपने web.config में इसे पंजीकृत:

<compilation debug="true"> 
    <expressionBuilders> 
    <add expressionPrefix="Code" type="Your.Namespace.CodeExpressionBuilder"/> 
    </expressionBuilders> 
</compilation> 

अंत में, यह अपने मार्कअप <%$ %> सिंटैक्स का उपयोग करने पर कॉल करें:

<asp:RadioButtonList ID="MyRadioButtonList" runat="server"> 
    <asp:ListItem Value="<%$ Code: CompanyName.SystemName.Constants.PaymentFrequency.FREQUENT.ToString() %>" Text="Yes" Selected="True"></asp:ListItem> 
    <asp:ListItem Value="<%$ Code: CompanyName.SystemName.Constants.PaymentFrequency.ONCE.ToString() %>" Text="No, Just do this once"></asp:ListItem> 
</asp:RadioButtonList> 

मुझे यहां से अधिकांश कोड मिला:

http://weblogs.asp.net/infinitiesloop/The-CodeExpressionBuilder

MSDN ASP.NET भाव अवलोकन

https://msdn.microsoft.com/en-us/library/d5bd1tad.aspx

MSDN ExpressionBuilder कक्षा संदर्भ

https://msdn.microsoft.com/en-us/library/system.web.compilation.expressionbuilder(v=vs.110).aspx

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