Javascript 服务器端/客户端验证.net

Javascript 服务器端/客户端验证.net,javascript,.net,validation,Javascript,.net,Validation,好吧,我有一个奇怪的问题,我需要一些关于如何解决的想法 我有一个指向sql数据库的vb.net web应用程序。有一个主键为自动递增整数的表 当用户向该表添加对象时,它当前不会检查其中一个数据行中是否已经存在“名字”和“姓氏”。所需的功能添加如下所示: 1) 当用户提交表单时,检查该表以查看是否已经存在这样的记录 1.1)如果记录不存在,则继续插入 2) 如果该记录确实存在,则向用户显示该记录存在的警告 2.1)警告应有两个按钮,“继续”和“取消” 2.1.1)如果用户单击“继续”,则继续添加重

好吧,我有一个奇怪的问题,我需要一些关于如何解决的想法

我有一个指向sql数据库的vb.net web应用程序。有一个主键为自动递增整数的表

当用户向该表添加对象时,它当前不会检查其中一个数据行中是否已经存在“名字”和“姓氏”。所需的功能添加如下所示:

1) 当用户提交表单时,检查该表以查看是否已经存在这样的记录

1.1)如果记录不存在,则继续插入

2) 如果该记录确实存在,则向用户显示该记录存在的警告

2.1)警告应有两个按钮,“继续”和“取消”

2.1.1)如果用户单击“继续”,则继续添加重复记录

2.1.2)如果用户单击“取消”,则停止插入

我对web开发还比较陌生(有一年多一点的经验)。我正在寻找“正确”的方法来做到这一点。这项任务让我感到困难的方面是,我必须运行查询,然后可能显示并发出警报(可能是javascript)。我不知道如何在服务器端验证的中间显示警报。

任何想法或意见都将不胜感激


谢谢

如果不允许插入重复项,可以在数据库中创建唯一索引。但是,现在可以做的是获取数据库中的记录计数,其中firstname和lastname等于inserted

对于普通SQL,它看起来像 选择COUNT(recordID),其中firstName=@firstName和lastName=@lastName

或者使用实体框架看起来更容易。不管怎样,你的问题是“在服务器端验证的中间显示警报”。换个角度考虑。把它想象成两张支票

在输入表单中添加另一个控件,即“提交”按钮附近的不可见复选框。它应该包含关于用户同意插入重复记录的表达式。 一旦检测到该记录重复,请中断验证,并使复选框可见,但“提交”按钮已禁用。当用户选中复选框时,提交按钮应再次可见


现在,由于您要再次进行相同的验证,您必须将复选框纳入等式中-如果它可见并已选中,您就不必再检查记录重复,只需提交记录。如果需要重新使用该输入表单,请不要忘记取消选中复选框,并再次使其不可见。

此处要做的是在方法中添加一个
确认
参数或类似的内容,如下所示:

' This is just pseudocode; I'm guessing you can translate it to
' whatever web framework you're using
Sub InsertRecord(ByVal name() As String, Optional ByVal confirm As Boolean = False)
  If DuplicateRecord(name) And Not confirm
    ' Here's where you would render the page with a confirmation dialog
    RenderViewToRequestConfirmation()
    Return
  End

  DoInsertRecord(name)
  RenderViewAfterRecordInserted()
End
PageMethods.FunctionName(parameter, function(returnValueFromOtherFunction){ 
    ....function stuff
});
然后在正常情况下,您将从前端提交一个调用此方法的请求,而不使用
confirm
参数。对于重复记录,服务器将通过请求确认的对话框提供响应。如果用户单击“是”(或其他),则前端将发送相同的请求,但这一次需要使用必要的请求参数将
确认
设置为

对于web请求,此过程可能如下所示:

| Request Data                             | Response               |
|------------------------------------------|------------------------|
| { "name": "M Webster" }                  | Page w/ confirm dialog |
| { "name": "M Webster", "confirm": true } | Success page           |

我走的路线有点混乱。。。即使现在我已经让它工作了,但我会在这里解释它,以防以后有人能更好地解释它

我在代码隐藏中编写了一个函数,该函数调用检查数据库是否存在重复记录的函数,但我在函数声明上方添加了以下两行代码:

<System.Web.Services.WebMethod()>
<System.Web.Script.Services.ScriptMethod()>
然后我将JavaScript函数分配给文本框中的onBlur事件

谢谢你们的帮助,但我认为这是解决我问题的最好办法