2012-04-26 5 views
4

아약스를 사용하여 부분 뷰를 렌더링하려고합니다.
버튼을 제출할 때 부분 뷰를 렌더링해야합니다.
ActionLink를 사용하여 구현할 수 있지만 JavaScript로 Action을 호출하려고합니다.
그러나 다음 코드는 작동하지 않습니다. 액션이 호출되었지만 부분 뷰가 렌더링되지 않습니다.
어떻게 jQuery 아약스에 UpdateTargetId를 설정할 수 있습니까?

보기

@section script{ 
<script type="text/javascript"> 
    function test() { 
     $.ajax(
     { 
      type: "POST", 
      url: "Test", 
      data: "", 
      success: function (result) { alert("OK!!"); }, 
      error: function (req, status, error) { 
       alert("Damn!!");} 
     }); 


    } 
</script> 
} 

<input type="submit" onclick="test()" /> 
<div id="Container"> 

컨트롤러

public ActionResult Test() 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     return PartialView("ViewUserControl1"); 
    } 
    return View(); 
} 

부분보기 ViewUserControl1

Hello world 

이 작동하지만 정확하지 않을 수 있습니다

@Ajax.ActionLink("click me", "Test", new AjaxOptions { UpdateTargetId = "Container" }) 

답변

6

URL을하고 싶은 것이 아니다. Global.asax에 정의 된 라우팅 설정 에 따라 다릅니다. 하지만 귀하의 작업이 HomeController에있는 경우 일반적으로 귀하의 URL은 "/ Home/Test"처럼 보일 것입니다. 취소하는 것을 잊지 마세요, 당신이 블록을 업데이트 할 경우에도

... 
success: function (result) { $('#elementId').html(result) }, 
... 

: 당신은 다음의 방법으로 당신의 부분을 렌더링 할 수

... 
url: '@Url.Action("Test", "Home")' 
... 

: 그것은 행동 'URL을 얻기를 위해 URL 도우미를 사용하는 것이 좋습니다 먼저 폼에 눈에 띄지 않는 유효성 검사 - 구문 분석 양식이 포함되어 있는지 확인하십시오.

+0

다음과 같이 URL을 지정했습니다. url : "./Controller/Action/{id}" – shammelburg

+0

이것은 훌륭합니다! 이제 UpdateTargetID를 MVC의 Checkbox 용 Javascript 함수에 전달할 수 있습니다. 나는 지금 막 사용자가 상자를 검사 할 때, 당신이 여기에서 한 것처럼 파운드 기호로 UpdateTargetID 접두사를 붙이기 만하면, 나는 즉시 분리 된 div 컨테이너에있는 목록을 업데이트 할 수있다. – MikeTeeVee

관련 문제