C#函数返回一个值并显示在网页中

时间:2013-03-13 11:46:39

标签: javascript asp.net ajax asp.net-ajax

我在我的apx.cs文件中用C#编写了以下函数

[WebMethod]
public static string  SendForm()
{
    string message = "hello world";
    return message;
}

当我的aspx文件中的脚本调用该函数时,我正试图显示消息(“hello world”)

<script>
    function SendForm() {
        var msg;
        msg = PageMethods.SendForm(OnSucceeded, OnFailed);

        function OnSucceeded() {
            alert(msg);
        }

        function OnFailed(error) {
            // Alert user to the error.
            alert("failed");
        }
    }
</script>
    <body>
    <form id="Form1" runat="server">
   <asp:ScriptManager ID="ScriptManager" runat="server"
       EnablePageMethods="true" />
   <fieldset id="ContactFieldset">
        <input type="button" onclick="return SendForm()" value="send" />
   </fieldset>
</form>
</body>

当我点击按钮发送时,我收到一条警告,其中包含“未定义”消息,因此我的var'msg'未定义,但如何将我的C#函数中的'hello world'放入msg var?

感谢

4 个答案:

答案 0 :(得分:0)

尝试使用

 function OnSucceeded() {
        alert(msg.d);
    }

编辑-1

请通过此链接
How do I call a particular class method using ScriptManager

答案 1 :(得分:0)

    function SendForm() {
        var msg;
        msg = PageMethods.SendForm(function (result) {
            alert(result);
        }, function (error) {
            alert(error);
        });
    }

这应该有效。

如果从SendForm方法抛出异常,它会自动转到error方法。

[WebMethod]
public static string  SendForm()
{
    throw new Exception("Error");

    string message = "hello world";
    return message;
}

答案 2 :(得分:0)

这不是你收到消息的方式。

这样做

   function SendForm() {
        PageMethods.SendForm(OnSucceeded, OnFailed);

        function OnSucceeded(msg) {
            alert(msg);
        }

        function OnFailed(error) {
            // Alert user to the error.
            alert("failed");
        }
    }

您的成功函数将接收函数调用的结果作为参数。

答案 3 :(得分:0)

我不确定您使用的是什么版本的.Net框架,但如果它是3.5,那么您可能需要查看以下链接:

http://encosia.com/a-breaking-change-between-versions-of-aspnet-ajax/

在asp.net 3.5以后,响应包含在.d中。