繁体   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