【问题标题】:ASP.NET - issues with connecting html, javascript and CSSASP.NET - 连接 html、javascript 和 CSS 的问题
【发布时间】:2015-04-21 02:24:38
【问题描述】:

我有这段代码,它的作用只是显示一个弹出窗口,其中包含 2 个图像、一个背景和一个可点击的图像(按钮)。这个想法是,当用户点击按钮时,它会显示他们的用户 ID。设置只是 ASPX 文件中的 javascript 和 HTML(因此它可以实际读取用户的 id 等)。当我在 .NET 部分执行“response.write”时,它在屏幕上显示用户 ID 没问题。但是,我的问题是 javascript 看不到 'userid',所以当我在 javascript 中执行 'alert(userid) 时,它实际上并没有显示 ID,它只是空白。

这是我的代码:

<%@ Import Namespace="dbfunctions" %>
<%@ Import Namespace="generalfunctions" %>
<%@ Import Namespace="system.data" %>
<script language="VB" runat="server">

    Sub Page_Load(Sender As Object, e As EventArgs)
        Public userid As Integer
        Dim rst As DataView
        Dim connstr As String = getStrConn(HttpContext.Current)
        userid = Session("u_id")
        connstr = getStrConn(HttpContext.Current)
        'response.write(userid)
    End Sub
</script>

<script type='text/javascript'>

    function loadPage(){
        var userid=<%=userid%>;
        alert(userid)
    }

</script>
<html>

<head>
    <title>Please update your details</title>
    <link rel="stylesheet" type="text/css" href="main.css">
</head>

<body>
    <input type="hidden" id="userid" value="@userid" />
    <img id="img" src="corkboard.png" />
    <a id="b1" href="#" onclick="loadPage()">
        <img src="button.png" style="border-style: none" />
    </a>
</body>
</html>

非常感谢任何帮助,因为我想我快到了,aspx 和 javascript 单独工作,只需将它们组合在一起......

【问题讨论】:

    标签: javascript html asp.net web-applications web


    【解决方案1】:

    当页面被渲染时,你可以告诉你的预处理器将后面代码中的 vars 粘贴到 aspx 页面中。 vars 必须是公开的,并且放置在您的页面部分类中:

    <script language="VB" runat="server">
        Public userid As Integer
        Sub Page_Load(Sender As Object, e As EventArgs)
            userid = 32
        End Sub
    </script>
    

    然后使用预处理器指令将其粘贴到 aspx 页面中:

    var userid=<%=userid%>;  //this line will be rendered as "var userid=32"
    function loadPage(){    
        alert(userid)
    }
    

    【讨论】:

    • 嗨,我已经修改了我的代码以包含您所说的内容,但它仍然无法正常工作,还有什么我可以尝试的吗?我已经编辑了我的问题以显示新代码。
    • @SamFarr 你已经在page_load 中声明了userid,这使它成为页面加载方法的局部变量。您需要将其移出page_load
    • 非常感谢!您有什么资源可以推荐来提高我对 ASP.NET 的了解吗?
    • @SamFarr 我确信网上有很多教程,但我建议您通过反复试验来提高您的知识。尝试做某事直到你成功,然后进入下一个“项目”。这是学习 IMO 的最佳方式,如果您遇到困难,您可以在 google 上搜索或在此处发布。
    【解决方案2】:

    这不会以这种方式工作。原因:ASP 在服务器端执行,Javascript 在客户端执行。这意味着一旦执行 Javascrpt,您的“userid”变量就不再存在。您可以将其“存储”在可以在 HTML 渲染中幸存的地方,例如作为隐藏输入元素中的值:

    &lt;input type="hidden" id="userid" value="@userid" /&gt;

    然后在您的 Javascript 代码中读取该元素的值:

    function loadPage(){    
      var userid=document.getElementById("userid");
    alert(userid);
    }

    【讨论】:

    • 您好,非常感谢您的反馈,但它仍然无法正常工作:(。我添加了 到 HTML 的正文和 var userid=document.getElementById("userid"); 到函数但是当我执行警报时它仍然只是说“对象”......
    • 啊!忘记 .Value... var userid=document.getElementById("userid").Value;
    • 感谢您的参与 :)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2015-08-04
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2011-04-23
    相关资源
    最近更新 更多