2013-04-24 2 views
0

내 C# MVC4 응용 프로그램에는 두 가지 기본보기가 있습니다. "Index"및 "Index_Perm" 로그인 한 사용자의 역할은 이러한보기 중 어느 것이 렌더링되는지 결정합니다. "PMain"과 "PMain_Lim"에는 "Analysis"라는 또 다른 부분 뷰가 포함되어 있습니다. "Analysis"안에는 다음 스크립트가 있습니다.JQuery AJAX 부분 내부보기

<script type="text/javascript" charset="utf-8"> 
    $(document).ready(function() { 
     $('#SubmitAverage').click(function() { 
      var $form = $('#form1'); 
      $.ajax({ 
       type: "POST", 
       url: "Home/Average", 
       data: $form.serialize(), 
       success: function() { 
        alert("Edit successful"); 
       }, 
       error: function() { 
        alert('failure'); 
       } 
      }); 
     }); 
    }); 
    </script> 

내 문제는 "색인"이 액세스되는 기본보기 인 경우 제출 버튼을 클릭하면이 스크립트가 올바르게 실행되지만 "색인 _perm"이 기본보기 인 경우 버튼을 클릭하면 AJAX 게시물 The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. The directory or file specified does not exist on the Web server. Firebug에서 조사한 결과, mylocalhost/Home/Index_Perm/Home/Average 대신에 : mylocalhost/Home/Average이 내 스크립트에서 POST를 전송할 URL로 지정되었음을 알았습니다. 다음은 해당 코드 부분입니다. "PMain"및 "PMain_Lim"에서 동일 함 어떤 스크립트로 연결되는 버튼을 포함

<div id="Analysis" title="Analysis"> 
     @Html.Action("Analysis", "Home", Model) 
    </div> 
</section> 
<section> 
     <h3> 
      <button class="btn" id="SubmitAverage" value ="SubmitAverage" name="action:SubmitAverage" type="button">Submit Averages</button> 
     </h3> 
    </section> 
<section> 
    <div id="OtherView" title="OtherView" class="OtherChanges"> 
     @Html.Action("OtherView", "Home", (string)ViewBag.SearchKey) 
    </div> 
</section> 

어떤 아이디어 왜 그것 URL 및/또는 방법을 해결하기 위해 JQuery와 AJAX POST에서 사용할 나는 지정한 것을 무시?

답변

1

를 사용하여 AJAX 포스트의 urlhelper는

url: '@Url.Action("Average","Home")', 
+0

이 큰했다. 필요한 이유를 설명해 주시겠습니까? – HendPro12

+0

그 메서드의 정의는 모든 것을 말합니다 - "지정된 작업 이름과 컨트롤러 이름을 사용하여 작업 메서드에 대한 정규화 된 URL을 생성합니다."* –

+0

정의를 이해하고 왜 URL을 지정하는지 더 흥미가있었습니다 원래 한 가지 시나리오에서만 작동했습니다. 솔루션 모두 주셔서 감사합니다, 많이 주셔서 감사합니다! – HendPro12