我想使用Jquery getJSON与.NET 3.5,MVC2和JQuery1.4.1调用服务器端方法。
我已经遵循了一些在线教程,但是无法使用serveride方法返回除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 :(得分: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>