我在我的前端代碼中有這個Javascript函數,我試圖推動更多的客戶端驗證步驟,以通過後端解除太多的驗證工作。這裏是JavaScript函數:
<script type = "text/javascript" >
function watchdelete() {
var manufacturer = document.getElementById('<%:drpManufacturer.ClientID%>');
var model = document.getElementById('<%:drpModel.ClientID%>');
var strManufacturer = manufacturer.options[manufacturer.selectedIndex].value;
var strModel = model.options[model.selectedItem];
if (strManufacturer) // If there is a selected Manufacturer
{
if (confirm("Are you Sure you want to delete this Dimension Detail?"))
{
if (strModel) return true;
else
{
alert("Please select a car model first.");
return false;
}
}
}
else
{
alert("Please select a Manufacturer first before deleting");
return false;
}
}
</script>
<asp:ScriptManager ID="scripman1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>
下面是與的OnClientClick指向JavaScript函數的onclick指向後端功能問題的刪除按鈕代碼:
<asp:Button ID="btnDimensionDel" runat="server" Text="Delete" OnClientClick = "watchdelete();" OnClick="btnDimensionDel_Click" />
我發現我的後臺C#代碼在不應該被調用的時候被調用。有什麼我可以做的改變這個?我在這裏做錯了什麼?
你可以使用' OnClientClick =「return watchdelete();」'語句僅在您的watchdelete()返回true時執行 – Icepickle 2014-10-07 23:18:09
Smarty褲子。這是正確的答案。您需要插入單詞return並返回false,否則它還會執行c#後端代碼。感謝那。不久之後我發現了答案。雖然沒有傷害分享。 – 2014-10-07 23:23:25
如果您使用的是網頁表單,您應該在驗證控件中使用構建,它們處理客戶端和服務器端驗證,並且不應只依賴客戶端驗證。幾行驗證的額外負載服務器可以忽略不計。客戶端驗證的主要優勢是更流暢的用戶體驗。 – 2014-10-07 23:38:27