2013-05-08 198 views
0

好吧,所以我有一種奇怪的問題,我需要如何解決的想法。服務器端/客戶端驗證.net

我有一個指向sql數據庫的vb.net web應用程序。有一個主鍵是一個自動遞增整數的表。

當用戶將一個對象添加到此表中時,它當前不檢查是否在其中一個數據行中存在「名」和「姓」。所需的功能添加如下:

1)當用戶提交表單時,檢查表以查看這樣的記錄是否已經存在。

1.1)如果記錄不存在,繼續插入。

2)如果記錄不存在,顯示一個警告,這樣的記錄存在

2.1)警告應該有兩個按鈕,「繼續」和「取消」

2.1.1用戶)如果用戶點擊「繼續」,請繼續添加重複記錄

2.1.2)如果用戶單擊「取消」,則停止插入。

我還是比較新的網頁開發(有點超過一年的經驗)。我正在尋找「正確」的方式來做到這一點。這個任務對我來說很難,因爲我必須運行查詢,然後可能會顯示並提醒(可能是javascript)。我不確定如何在服務器端驗證過程中顯示警報。

感謝您的任何意見或建議!

謝謝!

回答

0

,我去是有點混亂......即使是現在,我有工作的路線,但在這裏我要解釋一下以防其他人可以在稍後更好地解釋它。

我寫在代碼的函數後面的調用,用於檢查重複記錄數據庫的功能,但我添加的這兩行代碼的函數聲明之上:

<System.Web.Services.WebMethod()> 
<System.Web.Script.Services.ScriptMethod()> 

於是,我寫了一個JavaScript函數,用於從文本框中獲取值並將值傳遞給後面代碼中的該函數。這可以通過代碼後面的函數聲明上方的那兩行以及使用PageMethods對象來實現。從JavaScript中實際調用是這樣的:

PageMethods.FunctionName(parameter, function(returnValueFromOtherFunction){ 
    ....function stuff 
}); 

然後我分配的JavaScript函數在文本框中onblur事件。

感謝您的幫助,但我認爲這是解決我的問題的最佳方法。

0

如果您不允許插入重複項,您可以在數據庫中創建唯一索引。但是,您現在可以執行的操作是獲取數據庫中的記錄數,其中firstname和lastname等於插入的記錄數。

如果是普通的SQL,它看起來像是 SELECT COUNT(recordID)WHERE firstName = @firstName AND lastName = @lastName;

或者實體框架看起來更容易。無論如何,你的問題是關於「在服務器端驗證中顯示警報」。以不同的方式考慮它。把它想象成關於兩次檢查。

在提交按鈕旁邊添加另一個控件到您的輸入表單,一個隱形複選框。它應該包含關於用戶同意插入重複記錄的表達。 一旦檢測到,該記錄重複,中斷驗證,並使複選框可見,但提交按鈕 - 禁用。當用戶選中複選框時,提交按鈕應該再次可見。

現在,由於您再次進行相同的驗證,您必須將複選框轉換爲公式 - 如果它可見並且已被檢查,則不必再次檢查記錄重複,只需提交記錄即可。如果您需要重新使用該輸入表單,請不要忘記取消選中該複選框並再次使其不可見。

0

你想在這裏做的是一個confirm參數或類似的東西添加到您的方法,像這樣:

' 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 

那麼正常情況下,從前端,你會提交將調用請求此方法不帶參數confirm。在重複記錄的情況下,服務器將通過請求確認的對話框呈現響應。如果用戶點擊「是」(或其他),那麼前端將發送相同的請求,但是這次用必要的請求參數將confirm設置爲True

在Web請求而言,這個過程可能是這樣的:

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