1

我有一个带有许多控件的页面。一些控件属性/值是从数据库加载的。其他是例如。日期组合框,数字为 1-31,年份 1900-2012 等。我想在 for 循环中填充组合框,但我注意到,如果我早在 Page_Init 就这样做,所有的值都会被输入视图状态。我不想禁用这些控件的视图状态,因为我需要它在隐藏回发时保持它们的值。

实际上,我在问 ASP.NET 如何确定控件的默认值是什么 - 如果我在标记中输入值,它不会将值放入视图状态,我想知道是否有人知道以编程方式重现该值的方法?


测试2.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test2.aspx.vb" Inherits="test2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlTest" runat="server"></asp:DropDownList>
    </div>
    </form>
</body>
</html>


test2.aspx.vb

部分类 test2 继承页面

Protected Sub Page_Init(sender As Object, e As EventArgs) Handles Me.Init
    If Request("addvals") IsNot Nothing Then
        For i As Integer = 0 To 1000
            ddlTest.Items.Add(i)
        Next
    End If
End Sub

结束类

4

3 回答 3

0

刚刚找到了一个副本 - 似乎不可能...... 是否可以在代码中设置 asp.net 控件属性值而不将其添加到视图状态?

于 2012-10-24T09:08:42.460 回答
0

根据这篇文章(在重复问题中链接)您可以动态创建控件并在将其添加到控件集合之前对其进行数据绑定。如果您的数据绑定控件不使用过多的项模板(即,如果它是 DropDownList 而不是 GridView),这将是很好的。另一种选择是禁用控件上的 ViewState,并确保在 ViewState 字典中手动保存隐藏控件的状态。

于 2012-10-27T15:20:28.143 回答
-1

在 Init 阶段添加的值不会持久化到 ViewState(它们会添加到 ViewState StateBag,但不会标记为脏)。

如果您想在 ViewState 被跟踪时设置默认属性(例如在加载阶段或之后),如果您不希望它们被持久化到 ViewState,则在将控件添加到页面的控件树之前设置它们。例如

Label label1 = new Label();
label1.Text = "Some text" // Not persisted to ViewState
Page.Controls.Add(label1);

Label label2 = new Label();
Page.Controls.Add(label2);
label2.Text = "Some text" // Persisted to ViewState
于 2012-10-24T09:00:36.533 回答