2009-11-17 18 views
17

मेरे पास एक विशिष्ट नियंत्रक क्रिया है जिसे दो बार कहा जा रहा है, जो अजीब होने के अलावा मेरे आवेदन के सिंगलटन हिस्से में समस्याएं पैदा कर रहा है (वास्तव में कोई समस्या नहीं, यह सिर्फ डबल कॉल लाया मेरे ध्यान में)।एएसपी.नेट एमवीसी एक्शन को दो बार बुलाया जाता है

कोई विचार क्यों हर बार दो बार नियंत्रक कार्रवाई निष्पादित की जाएगी?

+0

कुछ कोड अच्छा होगा – Woot4Moo

+2

यदि आवश्यक हो तो मैं जल्द ही कोड पोस्ट करूंगा; मैं बस किसी भी सामान्य 'गॉचाचा' के लिए मछली पकड़ रहा था जिसे किसी को भी पेश करना पड़ सकता है। – Dusda

+1

अपने ब्राउज़र से सर्वर पर जाने वाले अनुरोधों पर नज़र डालें। क्या आप एक या दो अनुरोध देखते हैं? यदि कोई: यहां कुछ कोड पोस्ट करें, यदि दो: tvanfosson का जवाब देखें। –

उत्तर

23

false वापस नहीं लौटा रहा है या जावास्क्रिप्ट क्लिक हैंडलर में ईवेंट पर डिफ़ॉल्ट कार्रवाई को रोकने के लिए एक लिंक पर AJAX के माध्यम से कॉल करता है। इस मामले में, यह लिंक की डिफ़ॉल्ट कार्रवाई भी करेगा (यानी, एक ही यूआरएल में एक गैर-AJAX पोस्ट)।

पूर्व।

<%= Html.ActionLink("action", "controller") %> 


$(function() { 
    $('a').on('click', function(e) { 
     // solve with "e.preventDefault();" here 
     var href = $(this).attr('href'); 
     $.get(href, function() { ... }); 
     // or solve with "return false;" here to prevent double request 
    }); 
}): 
+0

आह, यह एक संभव है। इसमें देख रहे हैं ... – Dusda

+1

वह था! धन्यवाद :)। – Dusda

+1

यह मेरी समस्या के लिए बहुत उपयोगी था। मेरे पास एक ऐसी क्रिया थी जो दो बार ट्रिगर हुई थी। – Tx3

6

मुझे एक समान समस्या थी। मुद्दा मेरी _Layout.cshtml फ़ाइल में इस लाइन की वजह से किया गया था:

<link rel="shortcut icon" href=""> 

ऊपर लाइन हटाने के बाद, अपने कार्यों के एक बार कहा जाता है।

+0

मैं सभी छवियों को संपादित करता हूं इसलिए अब उनके पास alt संपत्ति है और इसके अतिरिक्त मैंने src = "#" को हटा दिया है लेकिन मेरे पास अभी तक यह समस्या है। किसी भी विचार की सराहना की। – QMaster

+0

अपने विचार में सभी आईएमजी टैग टिप्पणी करने का प्रयास करें। यदि आपकी कार्रवाई को अभी भी दो बार बुलाया जा रहा है, तो सभी लिंक टैग पर टिप्पणी करने का प्रयास करें। – thd

+0

धन्यवाद, यह मेरी समस्या को ठीक करता है। इस पर और अधिक जोड़ने के लिए - रिक्त href को वास्तव में बुलाए गए क्रिया के यूआरएल के साथ असाइन किया जा रहा था, और अपने आप को कॉल कर रहा था। इस लिंक को हटाने से मेरे लिए समस्या ठीक हो गई। – Chaithanya

4

बहुत देर हो चुकी है, लेकिन मैंने पाया कि

<img id="myLogo" src="#"/> 

होने की वजह से यह इसे फिर से कॉल कर सकते हैं। उम्मीद है कि यह किसी की मदद करता है, कारण मुझे यकीन नहीं है।

यहां समाधान मिला। http://skonakanchi.blogspot.com/2011/09/action-method-calling-twice-in-aspnet.html

4

यह देर से भी है लेकिन शायद यह किसी की मदद करेगा।

मेरा मुद्दा समान था (नियंत्रक विधि प्रारंभिक लोड पर एक बार आग लग जाएगी और फिर तुरंत अतुल्यकालिक रूप से आग लग जाएगी)।

मैं HttpContext.request ऑब्जेक्ट का निरीक्षण करने में सक्षम था और यह निर्धारित किया कि दूसरा अनुरोध विजुअल स्टूडियो की "ब्राउज़र लिंक" सुविधा के कारण था।

मैंने ब्राउज़र लिंक को अक्षम कर दिया है और रहस्य नियंत्रक विधि में रहस्य AJAX कॉल अब नहीं होता है।

How to disable Browser Link

+0

हाँ। +1। ब्राउज़र लिंक सबसे खराब है। – matrixugly

0

दृश्य

public ActionResult Edit(int? id) 

से अशक्त में सक्षम तर्क निकालें

public ActionResult Edit(int id) 
1

करने के लिए अपने विशिष्ट मामले में, यह दो बार के लिए jquery.unobtrusive-ajax.min.js फ़ाइल का लोड था।
यह $(document).ready(function() { }); फ़ंक्शन को दो बार निष्पादित करने का कारण बन रहा था।

आशा है कि यह सहायक होगा।

0

मेरी समस्या यह थी कि मैंने गलती से recaptcha/api.js फ़ाइल फॉर्म google दो बार शामिल किया था। बेसलाउट में से एक और दृश्य में एक।

0

इस मुद्दे को केंडो ग्रिड का उपयोग करना हुआ। ग्रिड विकल्प ऑटोबिंड (झूठा) का उपयोग करें ..

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