除了我认为这是一个bad idea
事实之外,每个用户每个表单都会有多个请求,并且如果用户返回编辑他们拼写错误的字段,您将有额外的请求,所以它是很多浪费......除了我对此的看法之外,您可以从这里开始:
考虑到您希望这发生在客户端(即用户的 Web 浏览器)上的用户交互中,每次用户从一个文本框移动到另一个文本框时,您都需要进行 AJAX 调用。
由于您将要使用 AJAX,您应该查看jQuery,它有一些不错的 Ajax 方法供您使用。
用户可以通过按 Tab 或单击鼠标从文本框移动,因此您需要处理这两个事件。这里的关键字是focus
,并且有一些与此相对应的事件被触发。使用 jQuery,您可以使用该.Blur()
方法。
现在,由于您可能不想在每个文本框上一遍又一遍地重写相同的代码,因此您可能需要考虑创建一个custom class
派生自TextBox
AutoUpdateTextBox 或类似的东西,它具有与之相关联的所需 jQuery 内置。不要让它打印一堆 JavaScript,因为您只需要一个 JavaScript 函数一次,您可以向它传递参数,例如 TextBoxID 和 Value。
最后,您需要一些处理程序来接受此 AJAX 调用并更新您的数据库。有五千万种方法可以创建一个。如果您使用的是 ASP.net Web 窗体,则可以创建一个 ASHX 处理程序并将适当的数据库保存逻辑(或数据层访问逻辑,更恰当地说)添加到该处理程序。处理程序不是页面,它充当 URL,只接受一些参数并返回任何结果。它不执行 asp.net LifeCycle。
或者,如果使用 ASP.net MVC,您可以设置路由并让控制器处理此问题,然后只返回一个真/假值作为整个响应流,或者可能是 Ankur Singhal 的回答中建议的 JSON。使用 Web 表单可能更容易。
您甚至可以创建 Web 服务或 WCF 服务,但您真正需要的只是一个基本的处理程序。
好吧,我希望这足以让您入门,而无需为您提供完整的解决方案。我列出的组件,如果您开始一个一个地查看它们,作为一个完整的集合,将完成您想做的事情。
如果我可以建议的话,在用户每次进入新文本框时不更新的情况下想办法做到这一点可能会更明智、更高效。您可以在页面上保留一个 JavaScript 对象,该对象在某个事件之后(假设用户单击页面上的“下一步”按钮,或者您提供“稍后保存”按钮)然后使用整个值触发 AJAX 请求表单发送到您的处理程序或 Web 服务。
我在上面的大纲中的关键是,我希望它是有意义的,当你有一个像你提到的那样的需求时,你想把它分解成不同的组件。随着您进行更多的编程,“如何将我的项目或想法分解成更小的部分”将变得更加容易。
一旦您对部分进行了概述,您就可以开始构建每个部分,然后当您遇到困难并就您遇到的问题提出具体问题时,SO 上的人们会很乐意提供帮助。
正如他们所说,“你怎么吃大象? - 一次一口!” (我不知道有谁真正用大象来测试过,但你明白了......)
祝你好运!