C# asp UpdatePanel部分回发后如何维护AngularJS函数?

C# asp UpdatePanel部分回发后如何维护AngularJS函数?,c#,asp.net,angularjs,angular-ui-bootstrap,C#,Asp.net,Angularjs,Angular Ui Bootstrap,在我的Web表单项目中,我有一个示例。 当页面在UpdatePanel中执行部分回发时,我将丢失角度功能,并且角度指令不再控制单选按钮组及其当前选定的按钮 诚然,我看到过一些例子,比如endRequestHandler和pageLoad等部分回发后如何调用Javascript函数,但我不太确定如何以这种方式处理Angular。角度模块在页面顶部声明,如 这是我现在拥有的代码的简短版本… ASP.NET <!-- Pull hidden data to set current radio

在我的Web表单项目中,我有一个
示例。
当页面在UpdatePanel中执行部分回发时,我将丢失角度功能,并且角度指令不再控制单选按钮组及其当前选定的按钮

诚然,我看到过一些例子,比如
endRequestHandler
pageLoad
等部分回发后如何调用Javascript函数,但我不太确定如何以这种方式处理Angular。角度模块在页面顶部声明,如

这是我现在拥有的代码的简短版本…

ASP.NET

<!-- Pull hidden data to set current radio button positions -->
<asp:Label ID="FormStatusCurrentStatusLabel" runat="server" Visible="false" />
<script type="text/javascript">

        // Bind client-side events before/after async page-load
    function pageLoad(sender, args) {
        // Set and Update Form Status
        var ITUpdateStatusRadios = function ($scope) {
            $scope.radioModel = '<%= this.FormStatusCurrentStatusLabel.Text %>';
        };
    }

</script>

<asp:UpdatePanel ID="ITadminStatusUpdatePanel" runat="server">
    <ContentTemplate>
        <div ng-controller="ITUpdateStatusRadios">
            <div class="btn-group">
                <label class="btn btn-default" ng-model="radioModel" btn-radio="'Attention_Needed'">
                    <i class='fa fa-times-circle'></i>&nbsp;Attention Needed
                </label>
                <label class="btn btn-default" ng-model="radioModel" btn-radio="'Pending'">
                    <i class='fa fa-paper-plane-o'></i>&nbsp;Pending
                </label>
                <label class="btn btn-default" ng-model="radioModel" btn-radio="'Complete'">
                    <i class='fa fa-check'></i>&nbsp;Complete
                </label>
            </div>
            <!-- Pull Results from this label on form submit -->
            <input type="hidden" runat="server" id="FormStatusNewStatusInput" value="{{radioModel || 'null'}}">
        </div>
        <asp:Button ID="ITStatusUpdateSubmitButton" runat="server" OnClick="AdminStatusUpdateSubmitButton_Click" CssClass="btn btn-success" Text="Update" />
    </ContentTemplate>
</asp:UpdatePanel>
基本上,初始无线电位置是根据加载页面上从数据库读取的数据动态设置的。当按下“更新”按钮时,将调用另一个事件来更新相同的数据库表,然后理想情况下,当前无线电位置将实时重新设置,再次在
页面加载
。只是JS函数在角度上丢失了


有什么想法吗?

没有。UpdatePanel将替换现有的html。Angular未绑定到新的innerHtml。老实说,我建议不要在任何js库中使用ASP webforms,除非您是js/web专家。在这一点上,web表单也没有任何意义……如果你想继续走这条路,你需要让ASP运行一些JavaScript来处理html更新的重新绑定。NB asp webforms是我使用过的最痛苦的技术之一。@Aron也许我可以在C#中使用StringBuilder,然后在Page#Load上调用run函数?否则,我可以一起跳过UpdatePanel并重定向回页面以反映更改。对于我来说,从webforms转移注意力已经太晚了,但也许下次我应该尝试MVC方法。很明显,你并不清楚每个范围和生命周期。问题是webforms与ng不兼容。Webforms正在将奶酪从下移动。所以你需要告诉webforms告诉ng新奶酪在哪里。在javascript中,客户端。UpdatePanel中有一个属性用于在更新后设置客户端回调。用那个。或者,更正确地说,去掉所有更新面板,使用ng获取日期并绑定它。或者第三,摆脱ng。但是要让这两种技术协同工作,你需要对这两种技术都有深入的了解。@Aron我知道html在某处被替换,但我只是不确定在哪里连接这些点。我将查看UpdatePanel属性,看看是否可以让它为我工作。我很感谢你的意见。如果你想把webforms和Angular这样的前端库结合起来,那么到项目结束时,你会把你的每一根头发都拔出来。
    // Page Load
    protected void Page_Load(object sender, EventArgs e)
    {
        ...SQL stored procedure query 

        this.FormStatusCurrentStatusLabel.Text = sqlITFormStatusDataReader["CompletionStatus"].ToString(); // Current Form Completion status
    }

    // Update Button
    protected void AdminStatusUpdateSubmitButton_Click(object sender, EventArgs e)
    {

        try
        {
            .. prepair sql connection
            updateformsqlCmd.Parameters.AddWithValue("@udAdminCompletionStatus", FormStatusNewStatusInput.Value);
            .. call stored procedure and update value
        }
        catch()
        {
        }
        finally
        {
        }
    }