Asp.net 有ViewState和没有ViewState的代码该怎么写?

时间:2022-02-17 16:36:45

Asp.net 有ViewState和没有ViewState的代码该怎么写? 进来看文章的各位先对你们说声对不起了,我是带着疑问来发表这篇文章的,标题可能说的还不够明确,因为我也不知道该用什么词语来形容。如果有更好的方法,请各个大大不吝赐教!

Asp.net 有ViewState和没有ViewState的代码该怎么写?首先我想知道,在禁用ViewState的时候,只要存在<form id="form1" runat="server">的时候,就会存在ViewState,可是很多做的比较好的网站,首页都没有ViewState,就像我们的园子一样,首页连个ViewState的影子都看不到,是怎么实现的?

Asp.net 有ViewState和没有ViewState的代码该怎么写?别和我说什么模板引擎,那完应不是很清楚,也不了解,我问过我朋友,他说只要不用控件,就不会有ViewState产生,比如GridView,DataList等等,可是不用这些东东的话,又要像Asp和Jsp一样,在页面中写乱七八糟的的代码了,维护起来超难受,可是用了吧生成的|ViewState更难受,长的吓人。。  我真不知道该怎么形容才好。

 

Asp.net 有ViewState和没有ViewState的代码该怎么写?下面我就把代码贴出来,大家看看有什么好方法可以解决这个头疼的问题呢?

 

先来一个类,用于填充DataTable的

 

using  System.Data;

namespace  Test
{
    
public   class  DataSource
    {
        
public   static  DataTable GetList()
        {
            DataTable result 
=   new  DataTable();

            result.Columns.Add(
new  DataColumn( " Text " typeof ( string )));
            result.Columns.Add(
new  DataColumn( " Url " typeof ( string )));

            DataRow objDR 
=  result.NewRow();

            objDR[
" Text " =   " 红豆猥亵男童案下周将公布 " ;
            objDR[
" Url " =   " http://ent.163.com/11/0618/07/76QHOBR500034JAU.html " ;

            result.Rows.Add(objDR);

            
/**/

            objDR 
=  result.NewRow();

            objDR[
" Text " =   " 希腊为推动新紧缩政策重组内阁 " ;
            objDR[
" Url " =   " http://news.163.com/11/0618/02/76Q0OTS20001121M.html " ;

            result.Rows.Add(objDR);

            
/**/

            objDR 
=  result.NewRow();

            objDR[
" Text " =   " 学校为腾宿舍让大二学生提前毕业 " ;
            objDR[
" Url " =   " http://news.163.com/11/0618/10/76QV9OJ400014JB5.html " ;

            result.Rows.Add(objDR);

            
/**/

            objDR 
=  result.NewRow();

            objDR[
" Text " =   " 北京有望年内放松对高端项目的限购 " ;
            objDR[
" Url " =   " http://money.163.com/11/0617/19/76P92P0Q00253B0H.html " ;

            result.Rows.Add(objDR);

            
/**/

            objDR 
=  result.NewRow();

            objDR[
" Text " =   " 中国制造的山寨电子产品在中东蔓延 " ;
            objDR[
" Url " =   " http://discover.news.163.com/11/0618/11/76R0TT79000125LI.html " ;

            result.Rows.Add(objDR);

            
return  result;
        }
    }
}

 

先来一个有ViewState的代码:aspx页

 

<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " ExistsViewstate.aspx.cs "
    Inherits
= " Test.ExistsViewstate "  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:DataList  ID ="DataList1"  runat ="server" >
        
< HeaderTemplate >
            
< ul >
        
</ HeaderTemplate >
        
< ItemTemplate >
            
< li >< href ='<%#  Eval("Url")% > ' target="_blank">
                
<% Eval ( " Text " %> </ a ></ li >
        
</ ItemTemplate >
        
< FooterTemplate >
            
</ ul >
        
</ FooterTemplate >
    
</ asp:DataList >
    
</ form >
</ body >
</ html >

 

后台代码:cs文件

 

using  System;

namespace  Test
{
    
public   partial   class  ExistsViewstate : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            
if  ( ! this .IsPostBack)
            {
                
this .DataList1.DataSource  =  DataSource.GetList();
                
this .DataList1.DataBind();
            }
        }
    }
}

 

没有ViewState的代码:aspx页  需要导入两个命名空间; 这种写法的CS文件里没有任何多余的代码!

 

<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " NoExistsViewstate.aspx.cs "
    Inherits
= " Test.NoExistsViewstate "   %>

<% @ Import Namespace = " System.Data "   %>
<% @ Import Namespace = " Test "   %>
<! 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 >
    
< ul >
        
<%
            foreach (DataRow objDR in DataSource.GetList().Rows)
            {
                Response.Write(
String .Format( " <li><a href='{0}' target='_blank'>{1}</a></li> " , objDR[ " Url " ].ToString(), objDR[ " Text " ].ToString()));
            }
        
%>
    
</ ul >
</ body >
</ html >

 

Asp.net 有ViewState和没有ViewState的代码该怎么写?小弟在此膜拜~  求更好的写法,如果非得是用什么模板引擎,请提供一个案例,和“开源”易懂的,在此谢过……