[英]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.