簡體   English   中英

如何從基於只有一個asp.net形式的母版頁的asp.net頁中的javascript獲取價值

[英]How to get value from javascript in asp.net page based on masterpage which can have only one asp.net form

我想快速模擬一次密碼。 問題是我在母版頁子頁面中,並且一個contentplaceholder中只能有一個asp.net表單,另一個包含生成隨機代碼的javascript代碼。

我怎樣才能將此代碼傳遞給asp.net,以便當用戶單擊validate時,我可以將他輸入的代碼與javascript生成的隨機代碼進行比較(也許是ajax,但我看不出怎么做?)

如果我可以擁有2個asp.net表格,那將不是問題。

更新:我修改了下面的源代碼以包含Andrei建議的解決方案。

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">

</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <form id="form1" runat="server">
        Username: <asp:TextBox ID="txtUserName" runat="server" /></br>
        OTP: <asp:TextBox ID="txtOTP" runat="server" /></br>
        <asp:TextBox ID="OtpHiddenField" runat="server" /></br>
        <asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click" Text="Validate" /></br>
</form>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" Runat="Server">
<h2>Fake OTP Simulation</h2>
Enter "John"
</br>
Enter OTP 
<script type='text/javascript'>
    var pass = String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9));
    document.write(pass);
    document.getElementById('<%= OtpHiddenField.ClientID %>').value = pass;
</script>

您可以將生成的值插入與表單一起發布的隱藏字段中。

<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" Runat="Server">
    <form id="form1" runat="server">
        Username: <asp:TextBox ID="txtUserName" runat="server" /><br/>
        OTP: <asp:TextBox ID="txtOTP" runat="server" /><br/>
        <asp:Button ID="btnValidate" runat="server" onclick="btnValidate_Click" Text="Validate" /><br/>
        <asp:HiddenField ID="OtpHiddenField" runat="server" />
</form>
</asp:Content>

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" Runat="Server">
<h2>Fake OTP Simulation</h2>
Enter "John"
<br/>
Enter OTP 
<script type='text/javascript'>
    function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    var pass = String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9)) + String(getRandomInt(0, 9));
    document.write(pass);
    document.getElementById('<%= OtpHiddenField.ClientID %>').value = pass;
</script>
</asp:Content>

我希望您知道這種方法非常非常脆弱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM