【问题标题】:How to pass a variable from JavaScript to ASP如何将变量从 JavaScript 传递到 ASP
【发布时间】:2020-03-06 13:49:00
【问题描述】:

我不确定我做错了什么。我想将 JS 函数中的变量传递给 ASP,然后单击按钮在控制台中打印它。

JS函数:

<script>
    function can() {
        var candy = "Chocolate";
        document.getElementById("Hidden1").value = candy;
    }
</script>

ASP.net:

<form id="form1" runat="server">

    <div>
        <input id="Hidden1" type="hidden" runat="server" />
        <asp:Button ID="Button1" runat="server" OnClientClick="can()"  Text="Button"
            onclick="Button1_Click" />
    </div>
</form>

<script runat="server">
    protected void Button1_Click(object sender, EventArgs e){

        Response.Write(Hidden1.Value);
    }

</script>

【问题讨论】:

  • Hidden1 客户端 ID 不会是 Hidden1,因为您在其上有 runat 服务器 - 如果您的 js 在您的 asp 页面中,您需要使用 clientidmode = "static" 或让您的 js 使用 Hidden1.ClientID - @987654321 @
  • 我该如何解决这个问题? asp 对我来说还是有点陌生​​
  • 我可以将 clientidmode = "static" 放在我的 asp 按钮中吗?
  • 在您的输入中 - 您正在使用 js 使用 getElementByID 更新的元素

标签: javascript asp.net webforms


【解决方案1】:

您将aspx.cs 文件放置在错误的位置,应该在.cs 文件中。你应该尝试如下:

Aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebFormTest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>

    <form id="form1" runat="server">  

     <div>
        <input id="Hidden1" type="hidden" runat="server" />
        <asp:Button ID="Button1" runat="server" OnClientClick="can()"  Text="Button"
            onclick="Button1_Click" />
    </div>
    </form>

     <script>
        function can() {
        var candy = "Chocolate";
        document.getElementById("Hidden1").value = candy;
    }
</script>

</body>
</html>

Aspx.cs:

 protected void Button1_Click(object sender, EventArgs e)
        {

            Response.Write(Hidden1.Value);
        }

Test Result:

How To Get It Worked:

根据您的评论:您有WebForm1.aspx 页面如果您展开它,您将获得WebForm1.aspx.cs 文件,只需粘贴您的cs 文件,就会按预期工作。

看截图更清楚:

我已经按照预期进行了测试和工作。

【讨论】:

  • 我要物理创建一个新的 CS 文件吗?在执行此操作时,我收到错误:“当前上下文中不存在名称‘Respose’”和“当前上下文中不存在名称‘Hidden1’”
  • 你有WebForm1.aspx 页面对吗?如果你展开它,你会得到 WebForm1.aspx.cs 文件刚刚超过你的 cs 文件,就会按预期工作。
  • 不用担心,很高兴为您提供帮助。
  • 当我按下按钮时,它也会刷新页面,有没有办法禁用它?
  • 是的,这是 aspx 的一大缺点,您可以在按钮上使用 autopostback="false"。也可以使用Ajax
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2011-04-02
  • 2010-11-02
  • 2021-12-30
  • 2015-02-03
  • 2022-01-07
  • 2019-01-23
相关资源
最近更新 更多