2014-02-15 3 views
0

을 새로 고칠 수 없습니다. 컨트롤러의 메시지를보기의 컨트롤러로 리디렉션 한 후 컨트롤러 동작에 대한 일부 값을 컨트롤러에 전달합니다. 모델에 메시지 추가 및 모델을 pasisng 이 MVC- 아약스 요청 페이지 후 내보기 페이지에서

 $.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!!!") } 
     }); 

Model.INFO

내 코드를 javascript.In가 될 수 없습니다 (메시지입니다) JSON하지만 새로운 모델 값으로 볼에 전달 새로운 모델 value.On 두 번째 (포스트 백) 모델의 값을 다시 잡아 볼 컨트롤러

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")}, 

한 번만 모델의 정보에 가져옵니다. 당신이 변화를 기대하는 경우, 다음과 같은 새 값을 다시 성공의 결과를 전달하고 받아 들여야 :

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

콤보 박스에 값을 저장하고 버튼을 저장하는 페이지입니다. 콤보 상자에서 값을 선택하고 저장을 클릭하면 값이 컨트롤러로 전달됩니다. 콤보 상자 위젯은 자바 스크립트 기반 (KendoUI)이므로 ajax를 사용해야합니다. 값 선택 콤보 상자에, 그것은 이벤트를 선택하고 일부 process.After 아약스에 의해 데이터를 보내는 걸리고있다. – balron

+0

그런 다음 성공 처리기에서 클라이언트 쪽에서 리디렉션을 수행해야합니다. –

관련 문제