0

对于初学者,我搜索了什么是“标签运算符” <%=%> 没有答案,所以我将引用它

我在 ASP.NET 和 C# 中实现了一个进度条,这是用户控件的相关部分:

<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()%>'只工作一次。我怎样才能解决这个问题?

4

3 回答 3

1

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

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

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

<%= GetPercent %>
于 2012-07-24T09:53:09.133 回答
0

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

<%=blah()%> 只是一个替换。第一次生成页面时,它会对其进行评估,并将文档的该部分替换为评估结果,因此您可以将变量、函数、资源等放在那里。

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

于 2012-07-24T09:53:46.660 回答
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 构建了一个进度条(类似于你的)

于 2012-07-24T10:13:59.540 回答