2011-01-13 201 views
0

我想用.NET 3.5,MVC2和JQuery1.4.1调用使用Jquery getJSON的服务器端方法。

我跟着一些在线教程,但无法获得serverside方法返回除null之外的任何东西。所有3个警报都在下面的JS中触发,我可以在我的服务器端方法(也在下面)中找到一个中断点。正如我刚开始时,我已经包含了所有的客户端代码,以防万一我做了一些愚蠢的事情。任何想法我做错了 - 我花了很多年试图从服务器获得价值。非常感谢。

我的客户端代码:(每行缺少开始<)

<@ 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,像复读机,菜单,按钮和一些的WebForms控件。这不是一个好主意,但它不是无效的或者会导致错误。 – 2011-01-13 16:35:39