从codebehind中的javascript函数中检索值

时间:2015-06-30 10:59:03

标签: javascript c# asp.net code-behind

如何在代码隐藏中,在页面加载时从javascript函数中检索值。 javascript函数如:

<script type="text/javascript">
        function isIFrame() {
            var isInIFrame = (top.location != self.location);
            if (isInIFrame) {
                return "inside";
            }
            else {
                return "outside";
            }
        }
    </script>

和背后的代码如下:

protected void Page_Load(object sender, EventArgs e)
    {
        string resutOfExecuteJavaScript = "";
        // resutOfExecuteJavaScript = isIFrame(); // from javascript

        if (resutOfExecuteJavaScript == "inside")
        {
            // do something
        }
        else
        {
            // do something
        }
    }
谢谢。

3 个答案:

答案 0 :(得分:5)

您无法直接从服务器端代码调用客户端javascript方法。首先,您需要将函数结果分配给某个隐藏变量的值,然后在服务器端访问它

假设您有一个像这样的隐藏字段

<input type="hidden" runat="server" id="hdnVal"/>

然后您可以将值设置为

document.getElementById("hdnVal").value=isIFrame();

然后在发球区

 string resutOfExecuteJavaScript = hdnVal.Value;

答案 1 :(得分:1)

使用_doPostBack,你可以解决这个问题

      <script type="text/javascript">
             function isIFrame() {
            var isInIFrame =(top.location != self.location);
            var result;
            if (isInIFrame) { 
                result="inside";
             }
           else
             {
             result ="outside";
             }
           __doPostBack('callPostBack', result);
        </script>
    </head>

在代码背后的部分

protected void Page_Load(object sender, EventArgs e)
{
    this.ClientScript.GetPostBackEventReference(this, "arg");
    if (IsPostBack)
    {
        string eventTarget = this.Request["__EVENTTARGET"];
        string eventArgument = this.Request["__EVENTARGUMENT"];

        if (eventTarget != String.Empty && eventTarget == "callPostBack")
        {
            if (eventArgument == "inside"){   
               //do something
               }
           else if(eventArgument == "outside")
            {
           //do something
           }
       }
    else
    {
       // set the button click
        btnclick.Attributes.Add("onClick", "isIFrame();");
    }
}

以下链接可以帮助您获得更多想法。

http://www.dotnetcurry.com/ShowArticle.aspx?ID=203

答案 2 :(得分:0)

在javascript文件或脚本中添加:

function SetHiddenVariable()
     {
        document.getElementById(inpHide).value= "value";
     }
<。>在.aspx中添加此标记:

    <input id="inpHide" type="hidden" runat="server" />

在aspx.cs(c#文件)中添加:

 anyVariable = inpHide.Value;