2010-12-18 14 views
14
के माध्यम से प्रस्तुत करने नहीं है

मैं अपने रूप मिल गया है के रूप मेंAsp.Net MVC Ajax.BeginForm अजाक्स

<div id="contact-form" class="hidden" title="Online Request Form"> 
    @Using (Ajax.BeginForm("Contact", "Main", 
          Nothing, 
          New AjaxOptions With {.UpdateTargetId = "status", .HttpMethod = "post"}, 
          New With {.id = "contactUs"})) 
     @<div> 
      @Html.LabelFor(Function(m) m.Name)<br /> 
      @Html.TextBoxFor(Function(m) m.Name)<br /> 
      @Html.LabelFor(Function(m) m.Phone)<br /> 
      @Html.TextBoxFor(Function(m) m.Phone)<br /> 
      @Html.LabelFor(Function(m) m.Email)<br /> 
      @Html.TextBoxFor(Function(m) m.Email)<br /> 
      @Html.LabelFor(Function(m) m.Question)<br /> 
      @Html.TextAreaFor(Function(m) m.Question)<br /> 
      @Html.LabelFor(function(m) m.Security)<br /> 
      @Html.TextBoxFor(Function(m) m.Security)<br /> 
      <noscript> 
       <input type="submit" name="submit" value="Ok" /> 
      </noscript> 
      @Html.ValidationSummary("Oops, please correct the errors.")<span id="status">@TempData("status")</span> 
     </div> 
    End Using 
</div> 

इस प्रकार है और मैं एक jQuery-यूआई मोडल विंडो

<script> 
    $(function() { 

     // Open the modal dialog from the div.contact-us click event 
     $('#contact-us').click(function() { 
      $('#contact-form').dialog('open'); 
      return false; 
     }); 

     // Manage the modal dialog behavior. 
     $('#contact-form').dialog({ 
      modal: true, 
      autoOpen: false, 
      buttons: { 
       Cancel: function() { 
        $(this).dialog('close'); 
       }, 
       Ok: function() { 
        $('form#contactUs').trigger('submit'); 
       } 
      } 
     }); 
    }); 

</script> 

में खोलकर कर रहा हूँ जब मैं "ठीक" बटन पर क्लिक करें, यह उचित नियंत्रक से पोस्ट कर रहा है, लेकिन यह AJAX

''# fix the StackOverflow code coloring issue. 
    <HttpPost()> 
    Function Contact(ByVal contactForm As Models.ContactForm) As ActionResult 
     ViewData("Testimonials") = Helpers.GetTestimonials 

     If ModelState.IsValid Then 
      ''# Submit the email 
      TempData("status") = "Thank you, we will be in touch" 
     Else 
      ''# Return False 
      TempData("status") = "Oops, please correct the errors." 
     End If 


     If Request.IsAjaxRequest Then 
      Return Content(TempData("status").ToString) 
     Else 
      Return View("Index") 
     End If 
    End Function 

के माध्यम से पोस्टिंग नहीं है क्या मैं गलत कर रहा हूँ? बाद मैं फ़ॉर्म सबमिट करेंगे, मेरी यूआरएल http://example.com/Main/Contact जो मुझसे कहता है कि IsAjaxRequest = false

संपादित

यहां तक ​​कि जब मैं jQuery ui को "ठीक" बटन का उपयोग नहीं करते और केवल फार्म के लिए <input type="submit" name="submit" value="Ok" /> जोड़ने के लिए, प्रपत्र अजाक्स

+4

उस दिन की प्रतीक्षा कर रहे हैं जब स्टैक ओवरफ्लो उचित रूप से रेजर सिंटैक्स रंग दे सकता है। –

उत्तर

44

क्या आपके पास jquery AJAX स्क्रिप्ट शामिल है? मैंने इस तरह के व्यवहार को देखा है जब मैंने इसे शामिल नहीं किया था:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
+29

पवित्र बकवास मैं एक मंद हूँ। –

+9

मुझे आशा है कि ये टिप्पणी अपवॉट मजेदार हैं, और आप सभी मुझे मंद नहीं कर रहे हैं। हाहा –

+2

+1 एक ही समस्या थी। यह तय है। धन्यवाद। –

2

मैं थोड़ी देर में ASP.NET MVC AJAX के सहायकों के साथ काम नहीं किया है, लेकिन मेरा मानना ​​है कि Ajax.BeginForm उत्पन्न (एचटीएमएल) मार्कअप में एक इनलाइन onsubmit हैंडलर कहते हैं बिना पदों।

यदि यह मामला है, इस फार्म प्रोग्राम के रूप में (अपने jQuery कि submit ईवेंट ट्रिगर करता है) पर प्रस्तुत कॉल फार्म के onsubmit समारोह है, जो सबसे अधिक संभावना क्रिया प्रविष्ट सामान्य रद्द और के माध्यम से प्रपत्र सबमिट नहीं देगा AJAX।

ऐसा क्यों होता है इसके बारे में अधिक जानकारी के लिए, this related answer देखें।

एक विकल्प के रूप में, आप AJAX के माध्यम से फार्म पोस्ट

मुझे माइक्रोसॉफ्ट के AJAX हेल्पर्स का उपयोग करने से परेशानी से कम इन तरीकों में से कोई भी मिला है।

+0

यही मैंने सोचा था, लेकिन [यह SO सवाल] (http://stackoverflow.com/questions/1305601/how-to-post-asp-net-mvc-ajax-form-using-javascript-rather-than- सबमिट-बटन) 'ट्रिगर' विधि –

+0

@rockinthesixstring का उपयोग करने के लिए कहता है: मुझे विश्वास नहीं है। दस्तावेज़ (http://api.jquery.com/submit/) बताते हैं कि '.submit()' विधि '.trigger ('submit') के लिए शॉर्टकट है ' –

+0

मैंने अपना प्रश्न संपादित किया। –