我在我的 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/