【问题标题】:How to call a server side function from javascript code using "tag functions">如何使用“标签函数”从 javascript 代码调用服务器端函数">
【发布时间】:2012-07-24 09:47:12
【问题描述】:

对于初学者,我搜索了什么是“标签运算符” 没有答案,所以我将其作为参考

我在 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 + "%";
}

witch 只用了一次就可以很好地工作,然后什么也没有,就像对函数 '&lt;%=getPercent()%&gt;' 的调用只工作一次。我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    <%= GetPercent %>
    

    【讨论】:

    • 我认为你误解了这个问题 - 更多的是 OP 没有意识到 &lt;%= %&gt; 仅在服务器上渲染时被调用,并且不会在浏览器上再次被调用
    【解决方案2】:

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

    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 构建了一个进度条(类似于您的)

    【讨论】:

    • 好吧,对于初学者来说,我对那个标签的理解是有缺陷的,这只是一种假设,但你尽了最大的努力来提供一个可行的解决方案,所以我认为你应该得到公认的答案。谢谢
    【解决方案3】:

    你不能像那样做你想做的事。您需要使用 AJAX/AJAJ 来获得不断更新的进度条。

    只是一个替换。第一次生成页面时,它会对其进行评估,然后将文档的该部分替换为评估结果,因此您可以在其中放置变量、函数、资源等。

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

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 2018-10-19
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多