c# - 从 UpdatePanel/javascript 调用 C# getter - 永远不会获取更新的数据

标签 c# javascript asp.net updatepanel

我的代码隐藏中有此属性。

public string LocationOptions
{
    get { return Session["LocationOptions"].ToString(); }
    set { Session["LocationOptions"] = value; }
}

在前端,我有这个 JavaScript。

<script type="text/javascript">
    function pageLoad(sender, args) {           
        InitLocationsAutoComplete();
    }
</script>

<asp:UpdatePanel ID="upScript" runat="server">
     <ContentTemplate>
         <script type="text/javascript">
            function InitLocationsAutoComplete() {
                var locationsJson = '<%= LocationOptions %>';
                alert(locationsJson);
            }
        </script>
    </ContentTemplate>
</asp:UpdatePanel>

我正在 C# 代码中的 getter 和 setter 上设置断点。

我正在使用 MVP,并且 setter 是由演示者调用的。

在首页加载时,一切按预期进行。 setter 上的断点首先被击中。然后是 getter 上的断点。最后,我收到了一个 JavaScript 警报,其中包含我期望看到的值。

我在其他更新面板触发的部分回发上遇到了问题。在这些上,我的 setter 断点命中了一个新值。接下来,我的 getter 断点被命中,如果我快速观看 Session["LocationOptions"] 我会看到那里的新值。但是当我收到 javascript 警报时,它仍然会警报第一页加载的初始值。

如果它仍然调用 C# 中的属性,那么我不明白为什么更新的值没有传递到 javascript。为什么我坚持使用第一页加载时的初始值?

最佳答案

据我所知,部分更新内容中的javascript不会重新执行/重新评估。我的理解是,部分更新本质上会编辑 DOM 以更新页面的一部分,但这不允许动态更新页面上的 javascript。您可以在服务器端使用 ScriptManager.RegisterClientScriptBlock 在部分回发期间注册更新的 JavaScript。

关于c# - 从 UpdatePanel/javascript 调用 C# getter - 永远不会获取更新的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346193/

相关文章:

javascript - 滚动时从下往上滑入元素

javascript - 从 perl 脚本获取查询时出现 XML 解析错误

asp.net - 如何在 Visual Studio For Mac 中将 Web API 发布到部署槽?

c# - 对象引用未设置为对象的实例......但它是?

c# - XmlSerializer 保存空文件

c# - dbcontext.Add 和 dbcontext.AddObject 之间有什么区别

asp.net - 需要按年份将日期列拆分为多个列

c# - 从 Action 过滤器中查看模型

javascript - 样式新闻收录机以包含 Break 语句

asp.net - Telerik RadGrid 分页 - 重复记录和粘贴按钮