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/