标签: viewstate

在ASP.Net中向客户端发送大量复选框的最佳方法是什么?

我有以下情况:

用户将在页面上定义某个过滤器,在回发时,我将使用该过滤器查询数据库,并向用户返回一堆匹配的记录,每个记录旁边都有一个复选框,因此他可以选择是否对每个那些记录.

在Classic ASP/PHP中,我可以生成许多名为"chk __*"的控件,然后在回发时查看所有$ POST条目,查找前缀为"chk "的条目.

在ASP.Net 2.0中执行此操作的最佳方法是什么?

我可以通过实现带有包含复选框的模板的Repeater,将Repeater绑定到数据集,然后在第二个Postback上轻松完成,我只是这样做:

For Each it As RepeaterItem In repContacts.Items
    Dim chkTemp As CheckBox = DirectCast(it.FindControl("cbSelect"), CheckBox)
    If chkTemp.Checked Then

    End If
Next
Run Code Online (Sandbox Code Playgroud)

然而,这给我一个巨大的Viewstate 略有不利,这非常糟糕,因为客户端需要将整个视图状态重新上传到服务器,而这些人可能会在一个糟糕的连接上使用我的网站.

还有其他想法吗?(我也可以动态创建控件并像过去那样迭代Request.Form,但是,我正在寻找一个更干净的

asp.net viewstate dynamically-generated-co

2
推荐指数
1
解决办法
746
查看次数

禁用ViewState的ASP.NET DropDownList控件模拟'SelectedIndexChanged'的最佳方法

我发现很多帖子,人们试图解决SelectedIndexChanged不工作的问题EnableViewState='false'.

我有点困惑,为什么控制状态不会启动并允许它工作,但如果有人也可以解释这个奖励积分.

一些'黑客'非常'hacky'.就像在页面本身的viewstate上设置一个对应于下拉值的值,然后将该值与回发期间接收的值进行比较.

我正在寻找最优雅的解决方案(如果有一个好的解决方案).

我不知道这是否是一个聪明的派生控件或更聪明的东西,但我想确保解决方案足够通用,以便"可信任",而不仅仅是一个仅适用于特定页面的黑客(这是常见的这样的黑客!).

asp.net viewstate selectedindexchanged

2
推荐指数
1
解决办法
3671
查看次数

ViewState和动态删除的控件

ASP.NET页面ViewState似乎很难跟上动态删除的控件及其中的值.

我们以下面的代码为例:

ASPX:

<form id="form1" runat="server">
<div>
    <asp:Panel runat="server" ID="controls" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)

CS:

protected void Page_Init(object sender, EventArgs e) {
    Button b = new Button();
    b.Text = "Add";
    b.Click +=new EventHandler(buttonOnClick);
    form1.Controls.Add(b);
    Button postback = new Button();
    postback.Text = "Postback";
    form1.Controls.Add(postback);
}

protected void Page_Load(object sender, EventArgs e) {
    if (ViewState["controls"] != null) {
        for (int i = 0; i < int.Parse(ViewState["controls"].ToString()); i++) {
            controls.Controls.Add(new TextBox());
            Button remove = new Button();
            remove.Text = "Remove";
            remove.Click +=new EventHandler(removeOnClick); …
Run Code Online (Sandbox Code Playgroud)

asp.net viewstate controls dynamic

2
推荐指数
1
解决办法
5002
查看次数

ASP.NET自定义服务器控件不持久化ViewState

我创建了一个自定义服务器控件来处理一些数据,将数据存储到ViewState,然后从该数据中呈现自己.我正在使用调试器,可以物理地看到数据设置为ViewState:

public string RawData
    {
        get
        {
            string result = null;

            if (ViewState["RawData"] != null)
            {
                result = ViewState["RawData"].ToString();
            }

            return result;                
        }
        set
        {
            ViewState["RawData"] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,在回发后,ViewState值不会保留,并且为null.为什么会这样?我在哪里可以尝试进行故障排除?我可以说,自使用这种方法以来,ViewState隐藏字段长度已经增加.

提前致谢!

编辑:这是我的Render方法,看看我在哪里设置ViewState:

    protected override void Render(HtmlTextWriter writer)
    {
        if (this.RawData == null)
        {
            StringBuilder content = new StringBuilder();

            content.Append(this.BuildHeader());
            content.Append(this.BuildLevelsMarkup());
            content.Append(this.BuildFooter());

            this.RawData = content.ToString();
        }

        writer.Write(this.RawData);
    }
Run Code Online (Sandbox Code Playgroud)

asp.net viewstate

2
推荐指数
1
解决办法
1976
查看次数

C#自定义序列化 - 使用TypeConverter

所以我需要序列化一个通用字典Dictionary<long, List<MyClass>>.我需要序列化它以将其存储在ASP.Net应用程序的ViewState中.

我找到了一个使用TypeConverter将我的类转换为要序列化的字符串的示例,但是我收到一条错误消息MyClass is not marked as serializable.

这是我班的代码..

 [TypeConverter (typeof(MyClass_Converter))]
 public class MyClass
 {
     // some properties
 }

 public class MyClass_Converter : System.ComponentModel.TypeConverter
 {
     public override bool CanConvertTo(...)
     {
         // code
     }

     // CanConvertFrom, ConvertFrom, ConvertTo methods
 }
Run Code Online (Sandbox Code Playgroud)

然后,当我想序列化它时,我正在使用此代码...

 LosFormatter los = new LosFormatter();
 StringWriter sw = new StringWriter();
 los.Serialize(sw, hiddenData);
 String resultSt = sw.GetStringBuilder().ToString();   
 ViewState["HiddenData"] = resultSt;  
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?

c# asp.net viewstate serialization

2
推荐指数
1
解决办法
1395
查看次数

页面中的最后一个事件仍然可以影响页面的视图状态

我正在尝试创建一个强类型的viewstate对象.

public class MyNewPage : ViewStatePage<MyNewPageViewStateStore>
Run Code Online (Sandbox Code Playgroud)

在ViewStatePage的实施,我实例化对象Store进行的this.ViewState["_PageViewState"].在派生页面中,我将使用该对象并对其进行更改.

什么是在asp.net页面中调用的最后一个事件仍然可以影响View State?Unload吗?

asp.net viewstate

2
推荐指数
1
解决办法
4280
查看次数

通过 VIEWSTATE 抓取

我在编写用于抓取网页的实用程序时遇到了一个问题。

我正在发送 POST 请求来检索数据,我模仿了我正在抓取的网络行为(根据使用提琴手收集的信息)。

我已经能够自动替换我的 POST 上的所有参数,除了 VIEWSTATE。我的猜测是网络正在根据给定的 VIEWSTATE 执行一些逻辑,这就是为什么我没有得到预期的结果(我尝试在 VIEWSTATE 中输入 fiddler 给出的值,然后我确实得到了预期的结果,但是我想自动化这个过程)

有没有一种方法可以在不损坏它的情况下编辑 VIEWSTATE 字符串?

我尝试使用 base64 解码和编码(最后在 POST 操作之前使用 URLEncode),但无法保持有效。

.net c# viewstate screen-scraping

2
推荐指数
1
解决办法
2482
查看次数

在PostBack上保留动态UserControl

我正在将用户控件动态加载到div中,我需要在回发时保留该控件,以便Save在用户完成编辑后调用方法。div和所有用户控件都具有EnableViewState = True

ASPX Div声明

<div id="dynamicDiv" runat="server" enableviewstate="true">
</div>
Run Code Online (Sandbox Code Playgroud)

背后的代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If (Not IsPostBack) Then
        'Implement some logic to load the User Controls using LoadControl
        'Set all the userControl properties (including EnableViewState = True)
        'Call a method in the user control to load it's content

        Me.dynamicDiv.Controls.add(userControl)
    End If
End Sub

Protected Sub Save(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    For Each …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net viewstate user-controls postback

2
推荐指数
1
解决办法
4764
查看次数

如何解码ASP.NET 4.5 ViewState

我们最近将我们的站点迁移到.NET 4.5,其中一个更改是将targetFramework ="4.5"添加到httpRuntime以选择加入ASP.NET 4.5行为.一切都按预期工作,直到我们尝试在本地重现一些异常.在升级之前,我们能够使用视图状态解码器(例如http://www.binaryfortress.com/ASPNET-ViewState-Helper/)来查看存储在视图状态中的值.但是,这似乎不再可能,viewstate似乎在每个页面请求上使用随机密钥加密(每次都更改).

那么,有没有人知道在ASP.NET 4.5中正确解密/解码viewstate的步骤?

viewstate asp.net-4.5

2
推荐指数
1
解决办法
3232
查看次数

页面上的asp.net免费会话变量发生变化

我有一个Web应用程序,它使用Session变量来保存某些数据表的状态.我没有使用viewstate来增加页面的重量.

我不需要在页面更改时保持状态,所以我想在页面上释放这些会话变量.

用户更改网站页面时如何拦截?有一种像"Page Leave"这样的方法吗?

c# asp.net viewstate session

2
推荐指数
1
解决办法
4513
查看次数