2014-01-07 1 views
0

IE7에서 IE9로 변환했으며 불행히도 내 부분 뷰가 반환되고 부분 뷰가 전체 페이지를 덮어 씁니다. HTML에서 버튼을 클릭상의를하는부분 뷰는 ajax 호출 후에 만로드됩니다.

, 나는 자바 스크립트에서

를 불러 :

 $.ajax({ 
      type: "POST", 
      url: $('form').attr('action'), 
      data: $('form').serialize(), 
      dataType: "text", 
      success: function (response) { 
       alert('Pass'); // This will be hit 
      }, 
      error: function (errorObj) { 
       alert('Error'); 
      } 
     }); 

를이 다음 컨트롤러로 이동 :

[HttpPost] 
    public ActionResult Index(Index model) 
    { 
    return NewFeature(model); 
    } 

    [HttpPost] 
    public ActionResult NewFeature(Index model) 
    { 
     return PartialView("_feature", model); 
    } 

어떤 생각이 무엇을 될 수 있니?

+0

1), 반드시 [예를 들어, 확인 액션을 취소하십시오] (http://stackoverflow.com/questions/9370286/disable-href-after-clicking-ajax-js) 2) 당신의 부분에'_layout.cshtml'이 없는지 확인하십시오. – StuartLC

답변

0

제출 버튼이 아닌 한 기본 동작을 방지 할 필요가 없습니다. 제출 버튼 인 경우 false를 반환하여 기본 액션을 재정의해야합니다. 유형이 아마 예상되는 것을

success: function (response) { 
      $("#DivIdToUpdate").html(response); 
     } 

주목해야 할 또 다른 것은 : 즉

<input type="submit" onclick="return myFunction()" /> 

function myFunction() 
{ 
    DoWork(); 
    return false; 
} 

당신이 부분을 반환하고 경고가 충돌되고 있음을 확인했기 때문에, 대답은만큼 간단해야 텍스트가 아닌 json이 되려면 나머지 코드는 볼 수 없습니다. 또한 컨트롤러에서 함수를 잘못 호출하고있는 것으로 보입니다. 이것도 변경해보십시오.

[HttpPost] 
public ActionResult Index(Index model) 
{ 
    return this.RedirectToAction("NewFeature", new { model = model }); 
} 

[HttpGet] 
public ActionResult NewFeature(Index model) 
{ 
    return this.PartialView("_feature", model); 
} 

이 코드는 게시물을 따르고 -> 리디렉션 -> 패턴을 얻을 일을 할 수있는 두 개의 요청을하게됩니다 다른 신선한 데이터를 얻을 수 있습니다. 그러면 ModelState가 새로 고치고 필요한 모든 데이터를 새로로드하게됩니다. 자바 스크립트 아약스 게시물은 컨트롤러에서 ActionResult를 컴파일 된 cshtml로 수신하므로 위의 코드를 호출하면 html이 선호하는 요소 내부에 렌더링됩니다. 또한

,

url: $('form').attr('action'), 

쉽게로 번역 할 수 있습니다 : 아약스는 링크를 클릭하여 트리거 또는 양식 제출하면

url: '@Url.Content("~/Home/Index")', 
관련 문제