如何使用“标记函数”>从javascript代码调用服务器端函数

时间:2012-07-24 09:47:12

标签: c# javascript asp.net .net ajax

对于初学者,我已经搜索了什么是“标记运算符”<%=%>没有回答,所以我会以那样的方式引用它

我在ASP.NET和C#中实现progress bar,这是用户控件的相关部分:

<div class="progress_container" >
    <div class="progress_bar tip" id="ProgressBar" title="78%"></div>
</div>    

<script type="text/javascript">        
    function myFunction() {
        document.getElementById("ProgressBar").setAttribute("title", '<%=getPercent()%>')
        var percent = $('.progress_bar').attr('title');
        $('.progress_bar').animate({ width: percent }, 1000);
    }
</script>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnProgressBar" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <asp:Button runat="server" Text="Go!"  id="btnProgressBar" OnClientClick="myFunction()" />
    </ContentTemplate>
</asp:UpdatePanel>

这是代码隐藏的功能:

public string getPercent()
{
    Random random = new Random();
    int randomNumber = random.Next(0, 100);
    return randomNumber + "%";
}

女巫设法很好地工作了一次,然后什么都没有,就像对函数'<%=getPercent()%>'的调用一样。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我知道这不是你问题的答案,但你可以这样做(使用属性)肯定

public string GetPercent
    {
        get
        {
            Random random = new Random();
            int randomNumber = random.Next(0, 100);
            return randomNumber + "%";
        }
    }

而不仅仅是从aspx文件中调用它

<%= GetPercent %>

答案 1 :(得分:0)

你不能做那样的尝试。您需要使用AJAX / AJAJ来持续更新进度条。

&LT;%=等等()%&GT;只是一个替代品。第一次生成页面时,它会对其进行求值,然后用评估结果替换文档的那一部分,这样就可以在其中放置变量,函数,资源等。

看起来你正在使用jQuery,所以看看$ .ajax()

答案 2 :(得分:0)

你可以使用像这样的内联属性

var randNum= '<%= Percent %>';

public string Percent
{
    get
    {
         return getPercent();
    }
}

或者你可以使用这样的东西。

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "RandValue", "var randNum= '" + getPercent()+ "';", true);

其中randNum是您希望在客户端访问的javascript变量

<击>

<强>更新

您需要做的是在javascript中调用setTimeout并在一段时间后调用此函数

您可以通过Dino Espito查看此示例,了解如何构建上下文相关的进度条。虽然它在MVC中,但客户端代码是相同的

更新2

再次发现这篇文章Dino Espito,他使用ASP.NET构建了一个进度条(类似于你的)