2016-07-18 27 views
1

我有从外部JSON块读取到后面的C​​#代码的变量URL字符串。通过C#和ASP.Net从JSON打开网址

然后,我在需要打开新窗口并启动这些URL的表中创建可点击的按钮。这些被保存在对象的字符串变量中。

但是,我找不到一种方法来在aspx端打开一个窗口并使用URL字符串。

目前我增加了属性按钮

Button b = new Button(); 
b.Attributes.Add("onClick", "OpenURL()"); 
bCell.Controls.Add(b); 

有了这个,我可以打开一个窗口,但我似乎无法得到我从JSON字符串反序列化的URL转移到的OpenURL()

function OpenURL(url) {var x = window.open(url, 'mynewwin'); 

功能在前端。

由于url的变化,我无法在任何地方硬编码。

所有的按钮,行和单元格都是从JSON字符串中动态生成的。所以没有硬编码可以发生在这些。 //第一次的海报。试图寻找解决方案,但未能

+0

检查您是否可以在将URL传递给window.open之前对其进行编码。您可以在这里查看详细信息 - http://www.w3schools.com/jsref/jsref_encodeuri.asp –

+0

我没有遇到URL编码问题。我找不到将URL直接发送到.aspx页面的方法,而无需直接将值直接编码到“OpenURL()”方法中。例如:我想要做“OpenURL(var)”,但它直接读取它。因此,我将不得不做“OpenURL(www.google.com)”,这违背了变量URL的目的。对不起,如果我问这个问题不好。 –

+0

你尝试过“OpenURL(”+ var +“)”还是你也可以使用浏览器存储:本地存储? –

回答

0

如果你知道网址是你在建立按钮时什么,你可以这样做:

Button b = new Button(); 
var url = "some url"; 
b.Attributes.Add("onClick", string.Format("OpenURL({0})",url)); 
bCell.Controls.Add(b); 

如果你不知道该URL后才页面已加载,您可以将其存储在页面上的变量中,并在您单击链接时检索它。

<script> 
    var url; 

    //have whatever you use to set the url call this function 
    function setUrl(inputUrl){ 
     url = inputUrl; 
    } 

    function OpenURL(){ 
     var x = window.open(url,'some window'); 
    } 
</script> 
+0

谢谢你,这是有帮助的。我没有想到以这种方式使用替换字符串。 –