使用visual studio 2012将变量从cs文件传递到aspx文件(到javascript)

时间:2014-11-17 09:39:05

标签: javascript c# asp.net wpf visual-studio-2012

我的网站是WPF项目。 我想从我的cs文件中传递一个字符串:

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

public partial class _Default : System.Web.UI.Page
{
    public string strHello = "Hello World!";
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

到我的网站:

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

<!DOCTYPE html>

<html>
<head id="Head1" runat="server">
<script type="text/javascript">var jsstrHW = '<%=strHW%>'; alert("jsstrHW = " + jsstrHW);</script>
</head>
<body>
</body>
</html>

警报方法的输出:

jsstrHW = <%=strHW%>

请指导我如何正确行事。 非常感谢, Orian。

修改 我试过了:

ScriptManager.RegisterStartupScript(this, this.GetType(), "someID", "alert('This pops up');", true);

它并没有起作用。 我只将我的aspx文件和他的cs文件复制到其他文件夹,然后我关闭了我的解决方案并用这些文件创建了新的。一切都在Google Chrome上有效!所以..我的代码可能是正确的,但我的解决方案中的某些东西破坏了我的网站。它能是什么?正如我之前所说 - 我需要WPF应用程序的网站,而不是谷歌Chrome(或Mozilla Firefox等)。

再次感谢, Orian。

3 个答案:

答案 0 :(得分:0)

您可以像这样访问JS中的c#变量

<script>
     var jsstrHW = "<%=this.strHello %>";
     alert("jsstrHW = "+jsstrHW);
</script>

这里strHello是cs页面上的变量名。

<强> 建议 你可以使用RegisterClientScriptBlock

<强> 更新 你可以试试这个

 <script>
      var jsstrHW = <%= "'" + strHello + "'"%>;
     alert(jsstrHW);
</script>

答案 1 :(得分:0)

您可以使用 REGISTERCLIENTSCRIPTBLOCK 将值从C#传递给javascript。

C#代码:

ScriptManager.RegisterClientScriptBlock(Me.Page, Me.Page.GetType(), "someID", 
                     "PassValue("+ strHW +");", True)

Javascript代码:

function PassValue(value) 
{
    alert(value)
}

答案 2 :(得分:0)

那么, 最终我找到了传递字符串的另一种方法:

  this.WPFWindow.InvokeScript ("WriteFromExternal", new object [] {"this string is passed to  WriteFromExternal"});

和JS:

function WriteFromExternal(message)
    {
        alert("Message from C#: " + message);
    }

它有效:)

谢谢大家。