繁体   English   中英

从JavaScript访问C#变量

[英]Access C# variable from in JavaScript

我正在学习ASP.net,C#中的代码后面有一个变量:

public int hasCar= 1;

在aspx文件中,我想在javascript函数中访问此变量:

function PrintCar( ) {
    var ind = <%=this.hasCar%>
    alert(ind);
}

但我得到错误:

不包含'hasCar'的定义,找不到扩展方法'hasCar'接受类型为'ASP.vids_aspx'的第一个参数(您是否缺少using指令或程序集引用?)

怎么了?

谢谢

这对我有用:

ASPX页面:

<body>
    <script type="text/javascript">
        function PrintCar( ) {
            var ind = <%=this.HasCar%>
            alert(ind);
        }
    </script>

    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="PrintCar();"/>
    </form>
</body>

背后的代码

public partial class WebForm1 : System.Web.UI.Page
    {
        public int HasCar { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            HasCar = 1;
        }
    }

我想提供一个免费的答案,而不是简单地复制别人的话。 我个人使用C#编写JS,而不是将标记放在aspx中。

我使用这种扩展方法:

public static class ClientScriptManagerExtensions
    {
        /// <summary>
        /// Registers an object as a variable on the page
        /// </summary>
        public static void RegisterObjectAsVariable(this ClientScriptManager mgr, Type type, string variableName, object objectToEncode)
        {
            mgr.RegisterClientScriptBlock(type,
                string.Concat("ClientScriptManagerExtensions_", variableName),
                string.Concat("var ", variableName, " = ", new JavaScriptSerializer().Serialize(objectToEncode), ";"),
                true);
        }
    }

然后打电话给我:

this.Page.ClientScript.RegisterObjectAsVariable(typeof(MyPage), "myVariable", new { myProperty = 123});

这将在您的页面上创建一个js对象:

var myVariable = 
{
 myProperty = 123
};

您可以通过JS访问。 我发现这种方法更加简洁,它使您可以将各种复杂的对象传递给您的代码。

您的.aspx页的起始行是否有以下行?

<%@ Page Language="C#" CodeBehind="default.aspx.cs" Inherits="YOURNAMESPACE._default" %>

我已经为您的问题创建了测试项目。

试试这个代码

Aspx代码..

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

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <script type="text/javascript">
        function PrintCar() {
            var ind = <%=this.HasCar%>;
            alert(ind);
        }
    </script>

    <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="PrintCar()"/>
    </form>
</body>
</html>

背后的代码...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace test
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        public int HasCar { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            HasCar = 1;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM