2012-05-04 7 views
6

पोस्ट नहीं करता है, मैं अपने दृश्य के लिए दृढ़ता से टाइप किए गए मॉडल का उपयोग कर रहा हूं। मेरे पास एक अक्षम टेक्स्ट बॉक्स है जिसका मूल्य मैं जावास्क्रिप्ट का उपयोग कर अद्यतन करता हूं। टेक्स्टबॉक्स कोजावास्क्रिप्ट द्वारा अपडेट एएसपीएनटी एमवीसी अक्षम टेक्स्ट बॉक्स नया मान

<%: Html.TextBoxFor(model => model.TotalAmount, new { disabled = "disabled"})%> 

यह NAME और आईडी के साथ 'TotalAmount' के रूप में एक टेक्स्टबॉक्स प्रस्तुत करता है। TotalAmount भी मेरे मॉडल पर एक संपत्ति है जो इस दृश्य से जुड़ा हुआ है।

जावास्क्रिप्ट ध्यान में रखते हुए अपने मूल्य अद्यतन करने के लिए अपने कार्य के भीतर इस तरह है:

document.getElementById('TotalAmount').value = {assigning new value here}; 

समारोह कहा जाता हो जाता है और मैं विकलांग पाठ बॉक्स में मूल्य देख सकते हैं जब मैं एक और संपादन योग्य में कुछ मान परिवर्तित पाठ बॉक्स। हालांकि, मैं नीचे के रूप में मेरी कार्रवाई विधि करने के लिए इस प्रपत्र पोस्ट जब:

[HttpPost] 
public ActionResult Process (ProcessVM FormPostVM) 
{ 
} 

विकलांग पाठ बॉक्स संपत्ति [TotalAmount] अभी भी पुराने मूल्य है, लेकिन संपादन योग्य पाठ बॉक्स जो मैं संशोधित नया मान मैं प्रवेश किया होता है। अक्षम टेक्स्टबॉक्स में जावास्क्रिप्ट अद्यतन मूल्य क्यों नहीं है?

मैं ऊपर कार्रवाई विधि में

ModelState.Remove("TotalAmount"); 

उपयोग करने की कोशिश की, लेकिन यह काम नहीं किया, जैसा कि मैंने पहले से ही लगा।

कोई सुराग, टिप्स?

अपने समय के लिए धन्यवाद .... इस तरह के बक्सें है disabled="disabled" विशेषता जब फ़ॉर्म सबमिट किया जाता कभी नहीं सर्वर से उनके मूल्यों भेज देंगे के रूप में

+0

4 एक मिनट में जवाब और वे सभी सही हैं। – tkt986

उत्तर

23

HTML इनपुट तत्वों। आप जबकि अभी भी इसे परिवर्तित करने से उपयोगकर्ता को अक्षम करने सर्वर से मूल्य भेजना चाहते हैं आप पाठ बॉक्स readonly कर सकता है: अगर आप disabled से readonly उपयोग करने के लिए इसे बदल अगर

<%= Html.TextBoxFor(model => model.TotalAmount, new { @readonly = "readonly" }) %> 
+0

+1 उदाहरण के लिए रीडोनली – user20358

+0

@ डारिन डिमिट्रोव को कैसे सेट करें, आपने कहा "... कभी भी उनके मान सर्वर पर नहीं भेजेगा ..."। क्या यह एक सामान्य नियम या एमवीसी विशिष्ट है? आपका समाधान टेक्स्टबॉक्स के लिए भी है। 'चयन' तत्वों के बारे में क्या? –

+0

@ अन्नर, इसका एएसपी.नेट एमवीसी के साथ कुछ लेना देना नहीं है। यह मूल HTML है। और यह 'चयन' सहित सभी इनपुट तत्वों के लिए सच है। –

3

, तो यह आपके लिए एक ही देना चाहिए कार्यक्षमता, लेकिन मूल्य पोस्ट करें।

4

विकलांग आदानों एक रूप में भेजा कभी नहीं कर रहे हैं सबमिट करते हैं, बजाय readonly विशेषता का उपयोग या छिपा आदानों

4

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

एक तरफ नोट पर, क्योंकि यह ऑर्डर कुल की तरह दिखता है, यह कुछ है जो मैं एचटीएमएल को हैक करने और अपने उत्पाद पर छूट पाने की संभावना खोलने के बजाय सर्वर पर फिर से शुरू कर दूंगा।

संपादित करें: दूसरे के बिंदुओं पर, मैं केवल पढ़ने योग्य विशेषता के बारे में भूल गया था। वह भी काम करेगा।

+0

+1 – user20358

1

ब्राउज़र आपके द्वारा खोजे गए अक्षम इनपुट नियंत्रणों में मूल्यों को वापस पोस्ट नहीं करते हैं। शायद इसके आस-पास काम करने का सबसे आसान तरीका फ़ॉर्म सबमिशन पर हुक करना है, और फ़ॉर्म को फिर से सक्षम करना है क्योंकि फॉर्म जमा किया जा रहा है; उपयोगकर्ता को मूल्य संपादित करने का मौका नहीं होगा, और इसे शेष अनुरोध के साथ पोस्ट किया जाना चाहिए।

मैं पिछले मुद्दा यह वर्णित है लगता है: यह बाहर की जाँच करें:

Retrieving the value of a asp:TextBox

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