У меня есть веб-приложение .Net 3.5, которое отключено на уровне страницы, но включено в выпадающем меню. Во время post back of the dropdown я получаю следующее исключениеВключение просмотра в выпадающем списке при выключенном просмотре страницы
Ссылка на объект не установлена в экземпляр объекта.
Это исключение происходит на следующей строке:
string selectedVal = ddlStatus.SelectedItem.Value;
Control.ViewStateMode Property от .Net 4.0
года. Это соответствует целям, если бы я использовал 4.0
Чтобы отключить состояние просмотра для страницы и включить его для конкретного элемента управления на странице, установите свойство EnableViewState страницы и управление верны, установите ViewStateMode свойство страницы «Отключено» и установите для свойства ViewStateMode элемента управления значение «Включено».
Как мы можем решить проблему при использовании .Net 3.5 framework?
КОД
public partial class FormattingTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Status status1 = new Status() { StatusCode = 1, StatusDescription = "Inctive" };
Status status2 = new Status() { StatusCode = 2, StatusDescription = "Active" };
List<Status> statucCollection = new List<Status>();
statucCollection.Add(status1);
statucCollection.Add(status2);
ddlStatus.DataTextField = "StatusDescription";
ddlStatus.DataValueField = "StatusCode";
ddlStatus.DataSource = statucCollection;
ddlStatus.DataBind();
//Assembly Version - 3.5.0.0
string version = System.Reflection.Assembly
.GetExecutingAssembly()
.GetReferencedAssemblies()
.Where(x => x.Name == "System.Core").First().Version.ToString();
Response.Write(version);
}
string selectedVal = ddlStatus.SelectedItem.Value;
int y = 0;
}
}
public class Status
{
public int StatusCode { get; set; }
public string StatusDescription { get; set; }
}
MARKUP
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FormattingTest.aspx.cs" Inherits="FormattingTest"
EnableViewState="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="true" EnableViewState="true" >
</asp:DropDownList>
</form>
</body>
</html>
Ссылка:
- Server controls persist their state when EnableViewState is set to False
- Minimizing viewstate- confused by `EnableViewState` and `ViewStateMode` in asp.net 4.0
- EnableViewState not working in DropDownList