asp.net-mvc
  • asp.net-mvc-3
  • razor
  • 2011-02-03 16 views 13 likes 
    13

    Bunu işe almada çok başarısız oldum! Bu partialView işlemekASP.net MVC3 - Razor Görünümleri ve Ajax Geri Gönderimleri ile Kısmi Görünümler

    @model Project.Models.Account.ForgotPasswordModel 
    
    @{ 
        ViewBag.Title = "Forgot Password"; 
    } 
    
    <h2>ForgotPassword</h2> 
    
    <span id='@ViewBag.ReplaceID'> 
        @Html.Partial("_ForgotPasswordUserNameAjax", ViewData.Model) 
    </span> 
    

    bir görünümde

    ... ...

    @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> 
    } 
    

    Ve bu kontrolör eylem ...

    [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; 
    
         } 
    

    Ancak her zaman , görünümü sadece düzende yer almayan PartialView döndürür. (Yani sadece benim PartialView ekranda. Başka bir şey yok.) af denedim ew şeyler ben ... Online http://www.compiledthoughts.com/2011/01/aspnet-mvc-razor-partial-views-with.html http://stackoverflow.com/questions/4655365/mvc3-submit-ajax-form

    buldum Ama hiçbir şey bu sorunu belirlemiştir. InsertionMode'u değişiklik olmadan tüm değerlere değiştirdim. @ Html.Partial'i @ { Html.RenderPartial ("_ ForgotPasswordUserNameAjax", ViewData.Model) gibi bir kod bloğuna değiştirdim; }.

    çalışmıyor

    ... Ben fikirler (ve sabır) tükeniyor

    !

    yardım edin!

    cevap

    8

    EDIT PEBKAC.

    Projeyi yeni sürüme geçirdiğimi unuttum, yeni jquery.unobtrusive-ajax.js dosyalarını ekledim, ancak bunları hiçbir zaman _Layout.cshtml sayfasında ekledim. Bu kitaplığı sorunu giderildi. Üzgünüm beyler!

    Original Post Bunun bir hata olduğunu düşünmeye başladım. Dönüşü olmayan projeyi tekrar (MVC2) almak ve MVC3'e dönüştürmek. Tüm orijinal sayfaları aspx/ascx biçiminde bıraktım ve projeyi çalıştırdım. Sayfayı denedim. Aynı sorun hala devam ediyor. MVC2'ye geri dönüyor ve iyi çalışıyor. MVC3 bir kez daha denedi ve sorun yine oluyor.

    bunu işleme koyulabilmesi hepsi bu, sadece kısmi bir görünüm dönüyor yana

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

    0

    Sanırım "ana" görünüm de kısmi görünümler gibi ForgotPassword olarak da adlandırılır.

    Denetleyici yalnızca bir PartialViewResult döndürdüğünden, hiçbir düzen kullanılmaz.

    Ebeveyn görünümü ve ajax çağrıları için farklı bir eylem oluşturun.

    +0

    Eh, Razor manzarasına değişen ek olarak MVC3 bir MVC2 uygulamasından bu projeyi dönüştürme ediyorum. Bunlar MVC3'e geçmeden önce gayet iyi çalıştı. Denetleyici kodunu değiştirmek zorunda kalmamayı beklerdim (alt çizgi ile görünümlerin yeni adlandırma hariç). :( – DavidAndroidDev

    1

    ... Bu çok benzer bir sayfasını kullanarak projeyi dönüştürdü. Bu işlevsellik, Razor görünümlerinin işlenme biçiminden dolayı MVC3'te daha sıkı bir şekilde uygulanmaktadır.

    Basitçe aşağıdaki şekilde denetleyicisi eylemi değiştirin:

    [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

    Bu daha fazla biçimlendirmeyi netleştirirken, kısmi görünümün ana görünümünden her şeyi tamamen özlüyorum. Çok fazla değil ama daha fazla içeriğe sahip başka sayfalar varsa, kısmi görünüm nedir? O zaman kısmi görünüş nedir? – DavidAndroidDev

    İlgili konular