2011-01-13 30 views
0

.NET 3.5、MVC2、JQuery1.4.1でJquery getJSONを使用してサーバー側メソッドを呼び出したいとします。

私はいくつかのオンラインチュートリアルに従いましたが、null以外のものを返すserversideメソッドを取得することはできません。以下の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では使用されなくなりましたが、それらについては忘れてページメソッドがありません。コントローラとアクションがあります。

だから、あなたはあなたのビューで次の操作を行うことができます:

<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

リピータ、メニュー、ボタンなどのMVCで働くんいくつかのWebフォームコントロールがあります。それは素晴らしい考えではありませんが、それは無効ではないか、エラーを引き起こすでしょう。 –

+1

@Dave Ward、彼らは動作しますが、私はその使用法を推奨しません。 –

+0

それは素晴らしいです - ダーリンに感謝します。私は間違いなく、MVCで使用できるものと使用できないものを混同していました。 ScriptManagerを手に入れることができなかったとは思えません。レッスンは学んだ。 JSONリクエストからの戻り値が正しく機能しています。再度、感謝します。 – Beon

関連する問題