2011-01-13 13 views
0

.NET 3.5, MVC2 및 JQuery1.4.1에서 Jquery getJSON을 사용하여 서버 측 메소드를 호출하려고합니다.

일부 온라인 자습서를 따라 왔지만 serverside 메소드가 null이 아닌 다른 것을 돌려 줄 수는 없습니다. 아래의 JS에서 3 가지 경고가 모두 발생하고 내 서버 측 방법 (아래 참조)에서 중단 점을 맞힐 수 있습니다. 나가 밖으로 시작하고 있기 때문에, 나는 나가 어리석은 무언가를 한 경우에 대비하여 모든 클라이언트 측 코드를 포함시켰다. 내가 잘못하고있는 어떤 아이디어라도 - 나는 서버에서 가치를 되찾기 위해 오래 동안 노력했습니다. 많은 감사합니다.

내 클라이언트 코드는 다음과 같습니다

<@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Home Page 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  

<form id="form1" runat="server">  
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True"> 
</asp:ScriptManager> 

<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script> 

<script> 
function test() 
{ 
    alert("Here"); 
    $.getJSON(
    "/Home/Test", null, function(data, status) { alert("Success!"); alert(data); }); 
};  
</script> 

<asp:Button ID="Button1" runat="server" Text="Call Page Methods" OnClientClick="return test()"/> 

</form>   

</asp:Content> 

그리고 내 서버 측 코드 (각 행이 처음 < 누락되어)입니다 :

public JsonResult Test() 
{ 
    string fooString = "test"; 
    return Json(fooString, JsonRequestBehavior.AllowGet); 
} 

답변

0

난 당신이 여기에 몇 가지 개념을 혼합 생각합니다. ASP.NET과 ASP.NET MVC는 같은 것이 아닙니다. 코드 조각에서 ASP.NET MVC 응용 프로그램이라고 가정합니다 (보기는 System.Web.Mvc.ViewPage에서 상속 받음). ASP.NET MVC 응용 프로그램 <asp:Button runat="server"<form runat="server"><asp:ScriptManager에서는 더 이상 사용되지 않으며 페이지 메서드가 없다는 것을 잊어 버릴 수 있습니다. 컨트롤러와 동작이 있습니다.

그래서 당신은 당신의보기에서 다음을 수행 할 수 : 리피터, 메뉴 및 버튼과 같은, MVC에서 일을 여러 웹폼 컨트롤이 있습니다

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">  

    <script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $('#btnTest').click(function() { 
     $.getJSON('/Home/Test', null, function(data) { 
      alert("Success!"); 
     }); 
     return false; 
    }); 
    </script> 
    <input type="button" id="btnTest" name="test" /> 
</asp:Content> 
+0

. 그것이 좋은 생각은 아니지만, 잘못되었거나 오류를 일으키지는 않습니다. –

+1

@Dave Ward, 그들은 작동하지만 사용법을 권장하지 않습니다. –

+0

대단합니다. 대린에게 감사드립니다. 확실히 MVC에서 사용할 수있는 것과 사용할 수없는 것에 혼란스러워했습니다. 나는 내가 ScriptManager를 가질 수 없다는 것을 생각해 냈다. 수업은 배웠다. JSON 요청의 반환이 제대로 작동하고 있습니다. 다시 한번 감사드립니다. – Beon

관련 문제