c# - 我有一个为 ViewState 赋值的控件。它有效,但 ViewState 被禁用。如何?

标签 c# asp.net ajax viewstate

我在我的 ASPX 页面上禁用了 ViewState:

<%@ Page Title="Home Page" MasterPageFile="~/Views/Shared/WebForm.master" Language="C#" EnableViewState="False" AutoEventWireup="True" CodeBehind="Dashboard.aspx.cs" Inherits="CableSolve.Web.Dashboard.Dashboard"%>

我有以下类(class):

public class DashboardUpdatePanel : UpdatePanel
{
    public DashboardUpdatePanel()
    {
        UpdateMode = UpdatePanelUpdateMode.Conditional;
        CssClass = "maxHeight";
    }

    [Category("Appearance")]
    [Description("The CSS class applied to the UpdatePanel rendering")]
    public string CssClass
    {
        get
        {
            string s = (string)ViewState["CssClass"];
            return s ?? String.Empty;
        }
        set
        {
            ViewState["CssClass"] = value;
        }
    }

    protected override void RenderChildren(HtmlTextWriter writer)
    {
        if (IsInPartialRendering == false)
        {
            string cssClass = CssClass;
            if (cssClass.Length > 0)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass);
            }
        }
        base.RenderChildren(writer);
    }
}

如果我删除对 CssClass 属性的分配,我会在我的页面上看到效果。然而,setter 正在将值分配给 ViewState。

这是如何运作的?当然,如果 ViewState 被禁用,无论我是否分配了 CssClass,我都不会看到任何区别。

最佳答案

禁用 ViewState 意味着 ViewState 不会在回传中保留。

在回传中,ViewState 仍然有效。

关于c# - 我有一个为 ViewState 赋值的控件。它有效,但 ViewState 被禁用。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7985904/

相关文章:

c# - ToolStripTextBox 中的自定义绘制

c# - Angular 模板和 .NET 部分回发

c# - 无法从 asp.net 中的上传文件夹下载文件/图像

javascript - 'onbeforeunload' 触发两次

php - 将ajax数据发布到mysql中

c# - LINQ AsParallel() 是否保持线程安全?

c# - 如何使用 TableAdapter 进行更新?

c# - 双指缩放大图像?

asp.net - 如何使 ASP.NET MVC 应用程序成为多语言版本?

jquery - 如何通过 AJAX 使用 Stripe 结帐