2011-02-03 15 views
13

मैं इसे काम करने में बहुत असफल रहा हूं!एएसपीनेट एमवीसी 3 - अजाक्स पोस्टबैक के साथ रेजर व्यू और आंशिक दृश्य

एक ध्यान में रखते हुए ...

@model Project.Models.Account.ForgotPasswordModel 

@{ 
    ViewBag.Title = "Forgot Password"; 
} 

<h2>ForgotPassword</h2> 

<span id='@ViewBag.ReplaceID'> 
    @Html.Partial("_ForgotPasswordUserNameAjax", ViewData.Model) 
</span> 

मैं इस partialView प्रस्तुत करना ...

@model Project.Models.Account.ForgotPasswordModel 

@{ 
    this.Layout = null; 
} 

@using (Ajax.BeginForm("ForgotPassword", new AjaxOptions() { UpdateTargetId = ViewBag.ReplaceID, InsertionMode = InsertionMode.InsertAfter })) 
{ 
    @Html.ValidationSummary(true, "Forgot Password was unsuccessful. Please correct the errors and try again.") 
    <div id="login" class="box"> 
      <fieldset> 
      <h2>Account Information</h2> 
      <div class="inside"> 
       <div class="editor-label"> 
        @Html.LabelFor(m => m.Username) 
       </div> 
       <div class="editor-field"> 
        @Html.TextBoxFor(m => m.Username) 
        <br /> 
        @Html.ValidationMessageFor(m => m.Username) 
        <br /> 
       </div> 

       <p> 
        <input type="submit" value='Submit' /> 
       </p> 
      </div> 
     </fieldset> 
    </div> 
} 

और यह नियंत्रक कार्रवाई ...

[HttpPost] 
     public PartialViewResult ForgotPassword(ForgotPasswordModel model) 
     { 

      if (String.IsNullOrEmpty(model.Username)) 
      { 
       ModelState.AddModelError("Username", ForgotPasswordStrings.USER_NAME_REQUIRED); 
      } 
      else 
      { 
       bool isGood = false; 
       model.Question = this._security.ValidateUserNameGetSecurityQuestion(model.Username, out isGood); 

       if (!isGood) 
       { 
        ModelState.AddModelError("Username", ForgotPasswordStrings.USER_NAME_INVALID); 
       } 

      } 
      PartialViewResult retVal = null; 
      if (ModelState.IsValid) 
      { 

       retVal = PartialView("ForgotPasswordAnswerAjax", model); 
      } 
      else 
      { 
       retVal = PartialView("_ForgotPasswordUserNameAjax", model); 
      } 

      return retVal; 

     } 

फिर भी, हर बार , दृश्य केवल पार्टियल व्यू देता है, लेआउट में निहित नहीं है। (तो बस मेरा पार्टियलव्यू स्क्रीन पर है। कुछ और नहीं।) मैंने कोशिश की है ew चीजें मैं ऑनलाइन पाया है ... http://www.compiledthoughts.com/2011/01/aspnet-mvc-razor-partial-views-with.html http://stackoverflow.com/questions/4655365/mvc3-submit-ajax-form

लेकिन कुछ भी नहीं इस समस्या का समाधान हो गया है। मैंने InsertionMode को बिना किसी बदलाव के सभी मानों में बदल दिया है। मैंने @ Html.Partial को कोड कोड में @ { एचटीएमएल। रेंडरपार्टियल ("_ भूलपैसवर्ड यूज़रनामएजेक्स", व्यूडाटा.मोडेल) बदल दिया है; }।

कि काम नहीं करता है ...

मैं विचारों (और धैर्य) से बाहर चल रहा हूँ!

कृपया मदद करें!

उत्तर

8

EDIT पीईबीकेएसी।

जब मैं प्रोजेक्ट को अपग्रेड करता हूं तो मैं भूल गया, मैंने नई jquery.unobtrusive-ajax.js फ़ाइलों को जोड़ा, लेकिन उन्हें कभी भी _Layout.cshtml पृष्ठ पर शामिल नहीं किया। उस मुद्दे को ठीक करने में लाइब्रेरी जोड़ा गया। क्षमा करें दोस्तों!

मूल पोस्ट मुझे लगता है कि यह एक बग है। अनवरोधित परियोजना को फिर से लेना (एमवीसी 2) और इसे एमवीसी 3 में परिवर्तित करना। मैंने एएसपीएक्स/एसीएक्स प्रारूप में सभी मूल पेज छोड़े और परियोजना को चलाया। मैंने पेज की कोशिश की। वही समस्या अभी भी होती है। एमवीसी 2 पर वापस जा रहे हैं, और यह ठीक काम करता है। एमवीसी 3 एक और बार कोशिश की, और मुद्दा फिर से होता है।

मैं बहुत इस के समान एक पृष्ठ का उपयोग कर ...

http://mattsieker.com/index.php/2010/11/21/converting-asp-net-mvc2-project-to-mvc3/

0

मुझे लगता है कि "मुख्य" दृश्य को आंशिक विचारों के रूप में, भूल गए पासवर्ड भी कहा जाता है।

चूंकि नियंत्रक केवल एक PartialViewResult देता है, कोई लेआउट उपयोग नहीं किया जाता है।

अभिभावक दृश्य और AJAX कॉल के लिए एक अलग कार्रवाई बनाएं।

+0

, मैं इस परियोजना उस्तरा करने के लिए अधिक बार देखा बदलने के अलावा MVC3 के लिए एक MVC2 आवेदन से परिवर्तित कर रहा हूँ:

आप निम्नलिखित के लिए अपने नियंत्रक कार्रवाई बदल जाते हैं। एमवीसी 3 पर स्विच करने से पहले ये पूरी तरह ठीक काम करते थे। मैं नियंत्रक कोड को बदलने की उम्मीद नहीं कर रहा था (अंडरस्कोर के साथ विचारों के नए नामकरण को छोड़कर)। :( – DavidAndroidDev

1

के बाद से आप केवल एक आंशिक दृश्य लौट रहे हैं परियोजना परिवर्तित, बस इतना ही संसाधित हो जाता है। इस कार्यक्षमता का अधिक सख्ती से एमवीसी 3 में पालन किया जाता है क्योंकि जिस तरह से रेजर विचार संसाधित होते हैं।खैर

[HttpPost] 
     public ActionResult ForgotPassword(ForgotPasswordModel model) 
     { 

      if (String.IsNullOrEmpty(model.Username)) 
      { 
       ModelState.AddModelError("Username", ForgotPasswordStrings.USER_NAME_REQUIRED); 
      } 
      else 
      { 
       bool isGood = false; 
       model.Question = this._security.ValidateUserNameGetSecurityQuestion(model.Username, out isGood); 

       if (!isGood) 
       { 
        ModelState.AddModelError("Username", ForgotPasswordStrings.USER_NAME_INVALID); 
       } 

      } 
      PartialViewResult retVal = null; 
      if (ModelState.IsValid) 
      { 

       retVal = View("ForgotPasswordAnswerAjax", model); 
      } 
      else 
      { 
       retVal = PartialView("_ForgotPasswordUserNameAjax", model); 
      } 

      return retVal; 

     } 
+0

जबकि इसने मुझे और अधिक स्वरूपण किया, मैं आंशिक दृश्य के मूल दृश्य से सब कुछ पूरी तरह से याद कर रहा हूं। माना जाता है कि यह अधिक नहीं है, लेकिन यदि अधिक सामग्री वाले अन्य पृष्ठ हैं, तो मुझे इसे आंशिक दृश्य ?? तब आंशिक दृश्य क्या उपयोग है? – DavidAndroidDev

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