HTML按钮将输入文本数据发送到ASP端

时间:2015-10-28 22:02:12

标签: javascript c# jquery html asp.net

我正在开展一个小组项目,我正在试图找出ASP.net(我的小组中几乎没有人知道它,包括我)。我的工作是创建一些文本框和按钮,以便在单击按钮时,如果文本框中的文本具有< = 140个字符,则处理并发布文本框中的文本。

我尝试编写一些jQuery来检查文本框中的文本,然后将其发送到服务器进行处理。服务器将其保存到数据库,并将其发布到页面,如果长度不超过140个字符(将再次检查)。

不幸的是,我遇到了this错误。我试图联系我的团队成员,但他们非常忙于其他问题。这是我的代码:

Feed.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Feed.aspx.cs" Inherits="Feed_Feed" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<!-- This is here for test purpose -->
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" language="javascript">
    $(document).ready(
        function()
        {
            $('#TweetButton').click(
                function()
                {
                    // get the text from the TweetBox
                    var status = $('#TweetBox').val();
                    // if it is 140 characters or less
                    if (status.length <= 140)
                    {
                        var data = JSON.stringify(status);
                        // send to the server page
                        $.ajax({
                            url: '/Feed.aspx.cs',
                            type: 'POST',
                            dataType: 'json',
                            data: data,
                            success: function(myStatus) 
                            {
                                $('#MyStatus').html(myStatus);
                            }
                        });
                    }
                    else
                    {
                        alert("Tweet should contain no more than 140 characters");
                    }
                });
        });
</script>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <h1>User Feed</h1>
    <p>
        <input id="TweetBox" type="text" /><input id="TweetButton" type="button" value="button" />

    </p>
    <div id="MyStatus"></div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="LeftContent" Runat="Server">
</asp:Content>

Feed.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Feed_Feed : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

}

C#文件实际上是空的,因为我不知道如何处理发布到页面的数据(它应该在Page_Load吗?)我不知道该怎么做...... < / p>

1 个答案:

答案 0 :(得分:1)

代码不会将数据发布到asp.net服务器,因为您只是使用常规HTML元素。为了将html元素转换为asp.net元素,您需要使用属性runat="server",因此您的标记将变为:

<input id="TweetBox" type="text" runat="server" /><input id="TweetButton" type="button" value="button" runat="server" />

或者,为了使作业更简单并且在asp.net控件上具有更大的灵活性(比如访问其他属性),您应该严格使用asp.net核心控件。所以你的新标记看起来像:

<asp:TextBox id="TweetBox" runat="server"></asp:TextBox>
<asp:Button id="TweetButton" runat="server"></asp:Button>

为了触发点击事件以将数据发布到服务器上(代码隐藏),您需要将属性OnClick添加到按钮。

<asp:Button id="TweetButton" runat="server" OnClick="TweetButton_Click"></asp:Button>

在codebehind(* .aspx.cs)中,您需要处理按钮触发的事件并检查文本的长度。

public partial class Feed_Feed : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void TweetButton_Click(object sender, EventArgs e)
    {
       if(TweetBox.Text.Length <= 140)
       {
         // Save data in the database.
       }
    }

}

更新:

要使用ajax,您需要asp.net控件,因此您的标记将是

.ASPX =&gt;

<input id="TweetBox" type="text" />
<input id="TweetButton" type="button" value="button" />



 <script>
    $().ready(function()
    {
    $('#TweetButton').click(function(){
                        // if it is 140 characters or less
                        if (status.length <= 140)
                        {
                            // send to the server page
                            $.ajax({
                                url: '/Feed.aspx/SubmitTweet',
                                type: 'POST',
                                dataType: 'json',
                                  data: "{'tweet':'" + $('#TweetBox').val() + "'}",
                                success: function(myStatus) 
                                {
                                    $('#MyStatus').html(myStatus.d);
                                },
                                error : function(er)
                                {

                                }
                            });
                        }
                        else
                        {
                            alert("Tweet should contain no more than 140 characters");
                        }
                    });

    });
</script>

.ASPX.CS(代码隐藏)=&gt;

[WebMethod]
    public static string SubmitTweet(string tweet)
    {
        // dummy function :
        return DataSubmit(tweet) ? "Data Was submitted" : "Error while submitting data";
    }

    public bool DataSubmit(string data)
    {        
        //call db connection and save the tweet
        // if successful , return true else false
    }