【问题标题】:Can I get away with this or is it just too crude and unpractical?我可以摆脱这个还是它太粗糙和不切实际?
【发布时间】:2023-04-04 02:56:01
【问题描述】:

我昨晚整晚都在寻找一个免费的 AspNet 网络聊天控件,我可以简单地将它拖到我的网站中。好吧,搜索是徒劳的,因为我找不到符合我需求的控件,即用户列表、一对一聊天、踢出用户的能力..

最后我决定从头开始创建自己的控件。虽然它在我的机器上运行良好,但我担心它在共享托管环境中可能有点粗糙和不实用。

基本上这就是我所做的:

  1. 创建了一个用于存储聊天消息的 sql 数据库。
  2. 编写了存储过程并包含了一条清除旧消息的语句

然后是“粗”部分:

  1. 在我的页面上拖动更新面板和计时器控件
  2. 将一个Repeater 数据绑定到更新面板内的聊天消息表中
  3. 拖动另一个更新面板并在其中放置一个文本框和一个按钮
  4. 将计时器控件配置为每 5 秒计时一次。

..然后我让这一切都像这样工作 在计时器滴答事件中,我通过在中继器上调用 Databind() 来“刷新”消息显示,即

 protected void Timer1_Tick(object sender, EventArgs e)
    {
       MyRepeater.DataBind();
    }

然后在我的发送按钮点击事件中

 protected void btnSend_Click(object sender, EventArgs e)
    {

       MyDataLayer.InsertMessage(Message, Sender, CurrTime);

    } 

嗯,它在我的机器上运行良好,并且我通过简单地创建更多表来获得其他功能(用户列表,踢出用户..)。

但就像我说的那样,这对我来说似乎有点粗糙。所以我需要一个专业的意见。我应该用这个运行还是尝试另一种方法?

【问题讨论】:

    标签: asp.net chatroom


    【解决方案1】:

    我不确定您为什么认为它很粗糙——我希望任何其他 ASP.NET 聊天控件都可以使用客户端轮询以完全相同的方式开发。但是,作为使用更新面板的替代方法,我建议使用 JQuery(或其他一些 Javascript 框架)编写客户端 AJAX 功能 - ASP.NET 更新面板实际上只是使用渲染技巧的标准 ASP.NET 回发,因此屏幕不必刷新。

    关于用你所拥有的东西跑步,如果你已经走到了尽头,我会继续。即使您决定用其他东西替换它,这也将是一个很好的关于聊天客户端要求的学习练习。

    【讨论】:

    • 我同意,我认为这没有什么大问题。请记住,首先让某些东西正常工作,然后您可以花时间将其制作成杰作
    • 好吧,我在创建控件之前做了一些研究,因为我使用中继器和更新面板的组合找到了一个,所以我认为我走错了路。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多