2016-04-11 23 views
0

neden bu kod çalışmıyor? "Tamam" ı aldım, ancak view1'i göremiyorum (view1 yüklenmemiş) .Görüntülemeleri prop1 ile yönetmek istiyorum. 1" yük view1ajax, mvc denetleyicisini çağırıyor

Hier benim denetleyicisi

[System.Web.Mvc.Route("Home/SubmitMyData/")] 
     [System.Web.Http.HttpPost] 
     public ActionResult SubmitMyData([FromBody]MyParamModel mydata) 
     { 


      if (mydata.Prop1.Equals("1")) 
       return View("veiw1"); 
      else 
         return View("view2"); 


     } 

     public class MyParamModel // #4 
     { 
      public string Prop1 { get; set; } 
      public string Prop2 { get; set; } 
     } 

ve sizin javascript olarak

$('#Buttonv').click(function() { 

     var myData = {Prop1: "1", Prop2: ""}; // #1 
     $.ajax({ 
      type: 'POST', 
      data: myData, // #2 
      url: '/Home/SubmitMyData',   
     }) 
      .success(function (data) { 
       var output = "ok"; 

       $('#lblmessage').html(output); 

      }) 
     .error(function (xhr, ajaxoption, thrownError) { 
      $('#lblmessage').html("moshkelo" + xhr + "ajaxoption= " + ajaxoption + " throwerror=" + thrownError); 
     }); 
     //return false; 
    }); 

cevap

0

Eğer Denetleyicisi'nden Görünüm iade ediyorsanız, size aslında POST success callback'inde içinde HTML içeriği kullandığından emin olmak gerekir: Bir önceki output kullanıyorlardı

.success(function (data) { 
    // data will contain your content 
    $('#lblmessage').html(data); 
}) 

, hangi komut dosyanızın herhangi bir yerinde tanımlanmamış gibi görünmüyordu.

Ayrıca, return View("veiw1");return View("View1"); olması gereken bir yazım hatası var gibi görünüyor gibi dönüyor görünümün adını kontrol etmek isteyebilir.

+0

1: Veriler önemli değil. Ben sadece "public ActionResult SubmitMyData" çağırmak ve "veiw1" döndürmek istiyorum. 2: veiw1 adı doğrudur. 3: çıktı benim için de önemli değil. sadece bir mesaj – amin

+0

1. 'url'nizin düzgün bir şekilde çözüldüğünü varsayarsak, bu doğru bir şekilde çağırıyor. 2. Sadece yazım hatası olmadığından emin oldum. 3. Çıktının önemli olmadığını, ancak bir görünüm döndürmek istediğinizi belirtiyorsunuz. 'Success' fonksiyonunuzda (örn. Yukarıdaki örnekte' data ') çıkan parametre View'ınızın göstereceği tüm HTML'leri içerecektir, böylece görüntülemek istediğinizde, $ (element) gibi bir şey kullanırsınız.) biçimini (veri); '. –

+0

Modelinizin doğru bir şekilde yerleştirildiğinden emin olmak için Denetleyici Eyleminize bir kesme noktası koymayı denediniz mi? –

0

, sunucu tarafından döndürülen HTML görmezden benim ajax çağrıdır. ... değiştirmeyi documentation Başına

 .success(function (data) { 
      $('#lblmessage').html(data); 
     }) 

deneyin success yöntemine ilk parametre sunucu tarafından döndürülen verilerdir.

+0

ancak veriler benim için önemli değil. Ben sadece kontrol cihazımda "public ActionResult SubmitMyData ([FromBody] MyParamModel mydata)" aramak istiyorum. – amin