2014-02-15 62 views
0

在我的視圖頁上,我通過ajax請求,控制器操作,檢查後,將消息值重定向到視圖的控制器,將一些值傳遞給控制器​​。將消息添加到模型和粘貼模型再次查看用傳遞給查看爲JSON,但新的模型值(這是消息)的新模型value.On第二時間(回發)模型值不能捕捉由javascript.In我的代碼是Model.INFOMVC-經過ajax請求頁面不能刷新

 $.ajax({ 
      type: "POST", 
      url: '@Url.Action("TeamSaveChanges", "Administrator")', 
      data: { 
       ID: '@Model.ID', 
       doctorID: doctorValue, 
       nurseID:nurseValue, 
       driverID:driverValue, 
       technicianID: technicianValue 

      }, 
      dataType: "text", 
      success: function() { alert("@Model.INFO")}, 
      error: function() { alert("Error occured!!!") } 
     }); 

控制器

public ActionResult TeamSaveChanges(Guid ID, Guid? doctorID, Guid? nurseID, Guid? driverID, Guid? technicianID) 
    { 
     try 
     { 

      using (var client = SoapProxyFactory.CreateDSrvGDSoapClient()) 
      { 
       var emptyTeam = Guid.Empty; 
       var ambID = client.getAmbulanceIDbyTeamID(ID); 
       var baseresult = client.checkAmblanceTeamsforDuplicateMembers(ambID, ID); 


       if (doctorID == emptyTeam && nurseID == emptyTeam && driverID == emptyTeam && technicianID == emptyTeam ) 
       { 
        var result = client.EditTeamMembers(ID, doctorID, nurseID, driverID, technicianID); 
        if (result) 
         throw new Exception("saved"); 
       } 
       else 
       { 
        foreach (var item in baseresult) 
       { 
         if(item.DOCTORCODE == doctorID && item.NURSECODE == nurseID && item.DRIVERCODE == driverID && item.TECHNICIANCODE == technicianID) 
          throw new Exception("The team with Same Members is exist." + "<p>(" + item.TEAMCODE + ")</p>"); 
        } 

        var result = client.EditTeamMembers(ID, doctorID, nurseID, driverID, technicianID); 
        if (result) 
         throw new Exception("saved"); 
       }  
        catch (Exception exp) 
     { 
      string message = exp.Message; 
      return RedirectToAction("TeamMembers", "Administrator", new { ID = ID, message = message }); 


     } 

    [OutputCache(Location = System.Web.UI.OutputCacheLocation.None)] 
    public ActionResult TeamMembers(Guid? ID,string message) 
    { 
     try 
     { 
      if (!ID.HasValue()) 
       return RedirectToAction("Ambulance"); 


      using (var client = SoapProxyFactory.CreateDSrvALLSoapClient()) 
      { 
       Guid id = ID.Value; 

       var clientGD = SoapProxyFactory.CreateDSrvGDSoapClient(); 
       var result = client.GetTeamMembers(id); 
       result.INFO = message; 
       if (message != null) 
       { 
        result.INFO = message; 
        return Json(result,JsonRequestBehavior.AllowGet); 
       } 

      return View(result); 
      } 

     } 

回答

0

這條線:

success: function() { alert("@Model.INFO")}, 

只會在模型曾經的INFO拔,因爲它呈現在客戶端服務器值。如果你希望它改變,那麼你必須通過結果回成功,並接受新的值,例如:

success: function (d) { alert(d); }, 

的值返回到它,你必須從動作返回:

return Content("SOMEVAL"); // or PartialView or something that is string data 

但是,重定向到動作是不會返回給調用者的響應,並且可能無法通過AJAX妥善處理,所以我不是100%肯定的問題是什麼?

+1

是的,這正是我正在尋找的。我只需要(JSON.parse)解析返回的數據並獲取值。 – balron

0

爲什麼你會使用AJAX呢?發生什麼事情是您的腳本正在向您的控制器發出請求,該請求將響應作爲數據發回,而不是重定向到新的網頁。

只需創建一個表單,以典型的MVC方式將這些變量POST到控制器,就會得到您想要的結果。

+0

這是一個頁面,它是一些帶有值和保存按鈕的組合框。在選擇組合框上的值後,當點擊保存時,值通過ajax傳遞給控制器​​。我需要使用ajax,因爲組合框部件基於javascript(KendoUI)。當值選擇組合框,捕獲它是選擇事件並做一些處理。然後通過Ajax發送數據。 – balron

+0

然後,您應該使用您的成功處理程序在客戶端執行重定向。 –