2012-01-30 7 views
14

मैं तुल्यकालिक से एक रूप में परिवर्तित करने MVC 4.ASP.NET MVC 4 AJAX के प्रपत्र के काम नहीं कर रहा

में Ajax.BeginForm सहायक विधि का उपयोग कर मेरी नजर में अतुल्यकालिक कोशिश कर रहा हूँ मैं:

@{ 
     ViewBag.Title = "Users > Edit"; 
     var options = new AjaxOptions() 
          { 
           Url = Url.Action("Edit", "User"), 
           LoadingElementId = "saving", 
           LoadingElementDuration = 2000, 
           Confirm = "Are you sure you want to save this User?" 
          }; 
    } 

    <div id="saving" style="display:none; color:Red; font-weight: bold"> 
     <p>Saving...</p> 
    </div> 

    @using (Ajax.BeginForm(options)) 
    { 
     @Html.ValidationSummary(true) 
     <fieldset> 
      .... FIELDS ... 
      <p> 
       <input type="submit" value="Save" /> 
      </p> 
     </fieldset> 
    } 

जब सबमिट बटन पर क्लिक किया जाता है तो एक पूर्ण पोस्टबैक निष्पादित किया जा रहा है। मेरी क्रिया विधि इस तरह दिखती है:

[HttpPost] 
public ActionResult Edit(User user) 
{ 
    if (ModelState.IsValid) 
    { 
     _repository.Save(user); 
     TempData["message"] = String.Format("{0} has been saved.", user.Username); 
    } 

    return View(user); 
} 

क्या मुझे कुछ याद आ रही है? क्या एमवीसी 4 वर्तमान रिलीज में कुछ समस्याएं आई हैं?

मेरे वेब में। कॉनफिग मेरे पास क्लाइंट वैलिडेशन सक्षम है और UnobtrusiveJavaScriptEnabled सत्य पर सेट है।

मैं भी इन मेरे _Layout.cshtml में निर्दिष्ट है:

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

महत्वपूर्ण नोट काम करता है; jquery-1.9.0.min.js Ajax.FormBegin और Ajax का समर्थन नहीं करता है। एक्शनलिंक :( –

उत्तर

26

मदद करने के लिए वहाँ कुछ मैं याद कर रहा हूँ है की कोशिश करेंगे?

शायद तुम विनीत ajax स्क्रिप्ट याद कर रहे हैं:

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

+1 आपको यह मिला: डी –

+0

हाँ हे, आपने इसे देखा! वैध.unobtrusive.js आदि आदि था! धन्यवाद: डी – adamwtiko

+0

आपने अपना दिन बचा लिया है! –

0

अगर मैं सही समझ में आ रहा है, तो आप नियंत्रक करने के लिए डेटा पोस्ट करने के लिए, सफल होने के बाद आप मुख पृष्ठ पर जाने की जरूरत है कोशिश कर रहे हैं ?? यदि आप स्पष्ट नहीं कर सकते हैं। ताकि आप

if (ModelState.IsValid) 
    { 
     _repository.Save(user); 
     TempData["message"] = String.Format("{0} has been saved.", user.Username); 
     return RedirectToAction("yourActionToRedirect"); // after succesfull it will go to the index view 
    } 
+0

इस उदाहरण में मैं वास्तव में उसी उपयोगकर्ता डेटा के साथ वर्तमान दृश्य पर वापस लौटना चाहूंगा जैसे रिटर्न व्यू (उपयोगकर्ता); – adamwtiko

+0

तो क्या क्या समस्या है ?? इसे डीबग करने का प्रयास किया ?? क्या यह उपयोगकर्ता नियंत्रक पर कार्रवाई को मार रहा है ?? –

+0

कि यह एक असीमित तरीके से व्यवहार नहीं कर रहा है। पृष्ठ को वापस पोस्ट किया जा रहा है और Request.IsAjaxRequest() संपादन कार्रवाई में झूठी वापसी करता है – adamwtiko

0

मैं इस समस्या का एक ही तरह का था ... मैं nuget पैकेज कंसोल के साथ सभी js फ़ाइलों को नवीनीकृत किया है।

सिर्फ मेरी 2 सेंट, लेकिन यह भी लेखन के समय, jquery.unobtrusive.ajax फ़ाइल पदावनत jQuery समारोह के लिए कॉल शामिल करता है '.live' (=> यह jQuery 1.9+ संस्करण से हटा दिया गया है) jquery live

मुझे लगता है कि 4 घटनाओं आप .on साथ बदलना होगा कि तरह हैं, अब यह ठीक ;-)

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