2014-06-17 131 views
0

我有一个名为MyForm.aspx的aspx窗体。在这种形式我已经包含的JavaScript文件:从aspx.cs获取变量

<script type="text/javascript" src="Scripts/MyForm.js"></script> 

在MyForm.aspx.cs一个有一个属性:

public string Username { get; set; } 

我怎样才能在MyForm.js访问此Username变量?

我试图通过以下方式,但它不工作: var username = '<%=this.Username%>'

+1

什么是不工作? 'UserName'属性在使用时有一个值吗? –

+0

是的。如果我在.ascx中编写脚本,它正在工作,但是在这个.js文件中它没有。 JavaScript中的用户名将具有值“<%= this.Username%>”。 – ChocapicSz

+0

javascript文件如何与您的代码文件相关联以及它的属性如何? –

回答

0

由于服务器标签不是其规范的一部分,JavaScript引擎将无法解析服务器<%= this.Username%>代码。这些服务器括号只能在ASP.NET引擎的aspx/ascx文件中解析。

您可以创建在接受作为参数的用户名外地getUserName(用户名)的ID {返回用户名;}的MyForm.js文件中的函数从这样的MyForm.aspx页面并调用函数:

[MyForm.aspx]

var username = '<%=this.Username%>'; 
getUserName(userName); 

[MyForm.js]

getUserName(userName) 
{ 
    return userName; 
} 
+0

你的答案有点不对但是我编辑,它工作在MyForm.ascx我写的方法: '' 在MyForm.js中,我将它称为:'getUserName()'。 但是,非常感谢您的帮助!:) – ChocapicSz

1

调用来自服务器端一般处理程序文件的JavaScript:

<script type="text/javascript" src="cogs/awesomejavascript.ashx"></script> 

输出都从处理程序文件中的javascript:

public void ProcessRequest (HttpContext ctx) 
{ 
     ctx.Response.ContentType = "text/plain"; 
     StringBuilder bild = New StringBuilder; 
     bild.Append("var username = " + this.username); 
     ctx.Response.Write(bild.ToString); 

} 

如果您对处理程序文件不满意,可以使用ascx文件。

+0

Doh!谢谢帕特里克,编辑但看起来像OP有他的答案 – sanepete

+0

是啊对于MVC这是一个体面的答案你的文件处理程序的想法是好的+1 –