在 asp.net 中使用 C# 将值从客户端发送到服务器端

send value from client side to server side using C# in asp.net

我正在尝试使用 asp.net 和 C# 以及 bootstrap 创建网站内容管理。我已经使用 asp.net 和 C# 以及像 gridview 这样的服务器控件完成了这项工作,但我想创建一个像 wordpress CMS 这样的版本。
我将描述我的项目以明确我的目的。
首先,我从数据库中填写一个 DataTable。这个DatatablemessageId intSubject varcharname varcharemail varcharmessage textisRead bit等columns.isRead 列是位类型,用于指定消息是否已读。 我使用以下方法填充我的数据表:

DataTable dt = cls.Fill_In_DataTable("MessageFetchMessage");

然后我使用另一种方法动态生成 html 文本:在 Page_Load

protected void Page_Load(object sender, EventArgs e)
{
   messeges = cls.fetchMessages();
}

输入字符串变量,将生成的 html 代码附加到 aspx 页面:

<div class="row">
<div class="col-lg-12">
    <div class="panel panel-default">
        <div class="panel-heading">
            <h3 class="panel-title"><i class="fa fa-clock-o fa-fw"></i> Last messages From users</h3>
        </div>
        <div class="panel-body">
            <div class="list-group">
                <%=messeges %>
            </div>
            <div class="text-right">
                <a href="#">View All messages <i class="fa fa-arrow-circle-right"></i></a>
            </div>
        </div>
    </div>
</div>

消息内容包含来自fetchMessages()方法的这些文本:

public string fetchMessages()
{
    string post = ""; string readed = "";
    DataTable dt = cls.Fill_In_DataTable("MessageFetchMessage");
    if (dt.Rows.Count>0)
    {
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            DateTime dtTemp = DateTime.Parse(dt.Rows[i]["messageDate"].ToString());

            if (dt.Rows[i]["isRead"].ToString() == "True")
                readed = "MessageReaded"; 
            else
                readed = "MessageNew";
            post += "<div class='modal fade' id='myModal" + dt.Rows[i]["messageId"].ToString() + "' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>"
                + "<div class='modal-dialog' role='document'>"
                + "<div class='modal-content'>"
                + "<div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>&times;</span></button><h4 class='modal-title' id='myModalLabel'><span style='font-weight:bold'>Subject</span> : " + dt.Rows[i]["subject"].ToString() + "</h4></div>"
                + "<div class='modal-header'><p><span style='font-weight:bold'>Date</span> : " + dtTemp.ToString("yyyy/MM/dd") + "</p>"
                + "<p><span style='font-weight:bold'>Time</span> : " + dt.Rows[i]["messageTime"].ToString() + "</p>"
                + "<p><span style='font-weight:bold'>Email</span> : " + dt.Rows[i]["email"].ToString() + "</p></div>"
                + "<div class='modal-body'>" + dt.Rows[i]["message"].ToString() + "</div>"
                + "<div class='modal-footer'><button type='button' class='btn btn-default' data-dismiss='modal'>Close</button><input type='submit' ID='btn" + dt.Rows[i]["messageId"].ToString() + "'  class='btn btn-danger' onserverclick='btn_Click' value='Delete message' /></div>"    
                + "</div></div></div>";
            string narrow = Special.TimeToNarrow(dt.Rows[i]["messageDate"].ToString(), dt.Rows[i]["messageTime"].ToString());
            post += "<a data-toggle='modal' data-target='#myModal" + dt.Rows[i]["messageId"].ToString() + "' href='#' class='list-group-item " + readed + "'><span class='badge'>" + narrow + "</span><i class='fa fa-fw fa-comment'></i> <span>"
                 + dt.Rows[i]["name"].ToString() + "</span> : <span>" + dt.Rows[i]["subject"].ToString() + "</span></a>";
        }
    }

    return post;
}

最后我为 btn_Click 事件添加服务器代码:

protected void btn_Click(object sender, EventArgs e)
{
    string id = (sender as Control).ClientID;
    //Then give Id to database class for CRUD Intractions
}

但 btn_Click 从未从客户端调用过。我在 2 天内搜索了类似的问题,但没有得到答案。请帮我 :)
这里放上我的网站截图:

然后在单击其中一行后,弹出窗口 window 将使用模式 bootstrap:
显示

将您的模式、按钮和任何其他标记添加到 ASPX 页面(标记)。然后你可以在点击事件中获得你的ID。您的代码的动态生成没有在 Webforms 中向服务器端注册控件。

捕获消息 ID 后,您可以将其放在 ViewState、Session 或 UI 上的隐藏字段中。这样您就可以随时使用 ID。