2013-02-28 1 views
0

У меня есть веб-приложение .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> 

Ссылка:

  1. Server controls persist their state when EnableViewState is set to False
  2. Minimizing viewstate- confused by `EnableViewState` and `ViewStateMode` in asp.net 4.0
  3. EnableViewState not working in DropDownList

ответ

1

Когда вы установили ViewState выключен для полной страницы, вы не можете включить его для некоторых элементов управления.!

Другой способ может быть выполнен с возможностью включения страницы и закрытия его на каждом элементе управления, кроме того, который вы хотите сохранить.

Смежные вопросы