ASP.NET 在使用 PageMethods 回发之间保留 label.text 值的最佳方法

标签 asp.net ajax viewstate pagemethods

ASP.NET 2.0,页面方法。

再会,

当我的页面上的下拉列表发生更改时,我正在使用 ASP.NET AJAX PageMethods 动态更改标签的文本。

我知道标签的文本在客户端更改时不会在回发之间保留,这就是我的情况。我听说一个解决方案是将标签内容保留在隐藏字段中,然后在 Page_Load 中设置该字段中的标签文本。

但是,这个解决方案对我来说似乎并不干净。是否有其他替代方案或最佳实践?

谢谢!

只是为了澄清,我有一个带有人名的下拉列表。当下拉列表更改时,我想在标签中放置该人的电话。但是,我认为进行完整的回发并不是最好的选择,因此我决定使用 PageMethod 获取电话,传递下拉列表中所选项目的 ID 以检索电话,并将其放入标签中。

但是,由于其他控件会导致完全回发,因此每次回发时我都会丢失电话。我知道将它放在一个隐藏字段中,然后在有完整回发时将其设置回 Page_Load 中的标签会起作用,但是我在犹豫是否有其他解决方案。由于 WebMethods 被标记为静态,我不能写 Label.text = person.Telephone;在他们之中。

最佳答案

由于您似乎有 ajax,您可以只进行部分回发,将数字写入标签并写入 View 状态,然后在 page_load 中将值从 View 状态写入标签。

在 DropDownList 事件处理程序中:

string phone = <.. get phone number ...>;
myLabel.Text = phone;
ViewState["currentPhone"] = phone;

在页面加载上:
myLabel.Text = (ViewState["currentPhone"] != null) ? (string)ViewState["currentPhone"] : string.Empty;

如果您不想使用 Ajax,您可以在 aspx 文件中定义一个 HiddenInputField,用 javascript 填充内容,并在回发时用内容填充标签。
在aspx上:
<asp:HiddenInputField runat="server" ID="myHiddenInput" />

在页面加载上:
myLabel.Text = myHiddenInput.Value;

关于ASP.NET 在使用 PageMethods 回发之间保留 label.text 值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705615/

相关文章:

asp.net - 检测ajax调用,ASP.net

javascript - 将秒数转换为时间格式javascript

asp.net - 当客户端通过每个请求通过多个 IP 连接时,ViewState 解码失败

asp.net - masterpages/views/css 问题

asp.net - 数据库在 Visual Studio 2008 中生成失败

javascript - 使用 PHP 和 ajax 制作 alert()

c# - 在 ASP.NET 中使用 MachineKey

asp.net-mvc - viewbag 和 viewstate 的区别?

asp.net - 如何在 ASP.NET 图表上显示值

javascript - 如果调用 revokeObjectURL,Blob 图像将不会在 Chrome 中显示