如何在window.open方法的url末尾发送C#属性作为参数

如何在window.open方法的url末尾发送C#属性作为参数,c#,javascript,C#,Javascript,我有一个url,我必须在其中发送一些属性值。我的财产如下 public string MyValue { get { return MyValue; } set { MyValue = value; } } 现在我想将这个值作为参数发送到javascript中window.open方法中的url window.open(“../SearchPage/MySearch.aspx?MyValue=”,“left=20

我有一个url,我必须在其中发送一些属性值。我的财产如下

 public string MyValue
        {
            get { return MyValue; }
            set { MyValue = value; }
        }
现在我想将这个值作为参数发送到javascript中window.open方法中的url

window.open(“../SearchPage/MySearch.aspx?MyValue=”,“left=20,top=20,width=500,height=500”)
我试着用javascript访问,就像


但这不会发生。它会给解析器带来错误。如何实现这一点?

如果您的JavaScript位于一个单独的文件中,您不能使用
在其中定义变量,您应该使用
隐藏字段、cookie
和类似的东西

但如果你能把js放在aspx页面中,它应该可以工作

<head runat="server">
    <title></title>
    <script type="text/javascript">
        alert('<%= MyProperty %>');
    </script>
</head>
编辑

顺便说一句

不会导致集合上的StackOverflowException,您应该创建用于存储值的私有变量:)

@米希尔:你用了一个开头只有一个引号的“.”。在开头和结尾都使用双引号

试试这个:

可能会有用的


您还可以使用屏幕字段将值从一个页面发送到另一个页面。

您的js位于哪里?存档了吗?或者在页面脚本列表中?我尝试了两种方法。将我的.js文件保存在另一个文件夹中,并提供指向.aspx文件的链接。另一种方法是直接将脚本块包含在.aspx文件中。我在.aspxIt文件后面编写这些属性代码时出现以下错误<代码>CS0103:当前上下文中不存在名称“MyValue”页面上是否定义了CodeBehind?是。。在那里只有我申报财产。我在一个类中声明请尝试创建一个清晰的应用程序,并在那里尝试,我想问题是另一个地方,因为正如我所说的,如果我使用像
MyProperty{get;set;}这样的属性,它对我有效
它不会给出任何错误。但如果我像问题块中包含的代码示例一样使用,则会给出错误
无法计算表达式,因为当前线程处于堆栈溢出状态。
public partial class WebForm1 : System.Web.UI.Page
{
    public string MyProperty { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        MyProperty = "aaaaaaaaa";
    }
}
public string MyValue
{
    get { return MyValue; }
    set { MyValue = value; }
}
private string _myValue;
public string MyValue
{
    get { return _myValue; }
    set { _myValue = value; }
}