2013-05-04 19 views
9

İletişim formu aracılığıyla verileri göndermek için göze batmayan ajax kullanarak sorun yaşıyorum. Benim Kısmi Görüntüle böyle başka bir sayfaya yerleştirilirKısmi görünüm için göze batmayan Ajax Formu

@model site.ViewModel.Home.ContactUsViewModel 

@using (Ajax.BeginForm("_ContactUsPartial", "Home", 
         new AjaxOptions { UpdateTargetId = "result" })) 
     { 
      <fieldset> 
       <legend>Contact Us</legend> 
       @Html.ValidationSummary(true) 
       <div id="result"></div> 
       <div class="editor-label"> 
       @Html.LabelFor(m => m.FullName) 
       @Html.ValidationMessageFor(m => m.FullName)</div> 
       <div class="editor-field">@Html.TextBoxFor(m => m.FullName)</div> 
       <!-- other fields from model --> 
       <input type="submit" value="Submit"/> 
      </fieldset> 
     } 

:

@Html.Partial("_ContactUsPartial", new ContactUsViewModel()); 

My Home Kontrolörü böyle:

Benim Kısmi Görünüm böyledir

[HttpPost] 
public ActionResult _ContactUsPartial(ContactUsViewModel viewModel) 
{ 
    if (ModelState.IsValid) 
    { 
     try 
     { 
      //send email 
      return Content("Thanks for your message!"); 
     } 
     catch (Exception ex) 
     { 
      return Content("Problem sending the email."); 
     } 
    } 

      return Content("oops. invalid model"); 
} 

neler Beklemeyi bekliyorum, sunuma bastığımda denetleyicinin yerleştirilecek bazı metin içeriğini döndürmesi "sonuç" id ile div içinde.

Gerçekte ne oluyor, gönder tuşuna bastığımda, metin içeriği görüntülenen tek şey olan/Home/_ContactUsPartial öğesine yönlendiriliyorsunuz.

Burada neler olup bittiğini anlamıyorum ... ve kendimi sadece bu deliğe daha derin girmeyi bulmak için çevrimiçi örneklere bakmaya çalıştım.

Web.config sayfamda açık javascript etkin değil ve ayrıca jquery.unobtrusive-ajax.min.js dosyasına da başvurum var.

  • -jquery.unobtrusive ajax.min.js
  • jquery.validate.unobtrusive.min.js
  • MicrosoftMvcAjax.js: script'lerime

    ben ilgili olabilecek takipçileriniz var klasörü benim _Layout.cshtml etiketinde

ilan aşağıdakilerdir var:

<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> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/bootstrap.min.js")" type="text/javascript"></script> 
ve nasıl çalışır onu var gibi çünkü neyi demetleri

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
         "~/Scripts/jquery-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
         "~/Scripts/jquery-ui-{version}.js")); 

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
         "~/Scripts/jquery.unobtrusive*", 
         "~/Scripts/jquery.validate*")); 

emin değil:

BundleConfig.RegisterBundles(BundleTable.Bundles); 

RegisterBundles şuna benzer: Benim Global.asax.cs Application_Start içinde

Bu çizgi var Bu ScriptBundle aracılığıyla bunları getirmek için yapılandırıldı ... ama sonra da el ile _Layout.cshtml ...

kafasında yapılandırılmış var mı? Bununla ilgili bazı yardımları takdir ediyorum!

+0

Tamam, bu, göze çarpmayan kurulum haklarına sahip olmamanın bir sorunu gibi görünüyor. Microsoft.Unobtrusive'libraries'in projeden kaldırıldığından emin oldunuz mu? Bu konuya birkaç kez rastladım ve kütüphane ve bağımlılık konuları oldu. – Nomad101

+0

@ Nomad101 Hayır, bunu yapmadım ...% 100 emin değil nasıl ... – mezoid

+0

Görsel stüdyo ile Nuget kullanıyor musunuz? veya başka bir şey? Ayrıca proje ile paketlemeyi mi uyguluyorsunuz? – Nomad101

cevap

14

Sonunda anladım !!!! Zaman harcanan saatten sonra !!!

Bir yapılandırma sorunu olduğu ortaya çıktı ... ama tam olarak beklediğim şey değil.

jQuery 1.9.1 kullanıyorum ve Microsoft.jQuery.Unobtrusive.Ajax sürüm 2.0.30116.0 yazılımının en son sürümüdür. Ancak, bir sorun vardı ... jquery göze batmayan ajax js dosyası hala yöntemi yerine kullanımdan kaldırılmış canlı yöntemi kullandım ... Hatta bir güncelleştirme paketi yapmak bile dosyayı doğru şekilde güncelleştirmedi.

Bu iletiyi ASP.NET MVC 4: cannot modify jQuery Unobtrusive Ajax görüntüleyene kadar ben vardı ve eski bir sürüm olduğunu bulduğu dosyayı kontrol ettim.

İlk başta canlı yöntemini yeniden etkinleştirmek için jQuery.Migrate Nuget paketi kullanılır ... ama daha iyi bir çözüm kaldırmak veya mevcut dosyayı silin ve Microsoft.jQuery.Unobtrusive.Ajax yeniden Nuget kullanmak olduğunu tespit paketi.

Bu sorun giderildi ve şimdi tam olarak beklendiği gibi çalışıyor!

+1

Tam olarak neye ihtiyacım vardı. Paket Yöneticisi konsolunda Install-Package Microsoft.jQuery.Unobtrusive.Ajax'ı yükledim, JS dosyalarını betik paketime ekledim ve işe geri döndüm. –

İlgili konular