首页 新闻 赞助 找找看

为什么有的网站ASPX页面源代码没有恶心的__VIEWSTATE标志甚至没有FROM标记

0
悬赏园豆:20 [已关闭问题]

下面的代码是ASPX自动生成的 看起来很恶心

我发现有好多网站 ASP.NET做的  都没有下面这些东西,有的甚至都没有

<form name="Form1" method="post" action="login.aspx" onsubmit="javascript:return WebForm_OnSubmit();" id="Form1">

 

这个标记....  请问是怎么回事啊...

 

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkxNzExODcwOA9kFgICAQ9kFgICAQ8PFgIeBFRleHQFLzxwIGNsYXNzPWVycm1zZz7nlKjmiLflkI3miJblr4bnoIHplJnor6/vvIE8L3A+ZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCmNiUmVtZW1iZXIdXfQWXWIg/cuzXnEEzByKHaAHiw==" />
</div>

 

<script type="text/javascript">
<!--
var theForm = document.forms['Form1'];
if (!theForm) {
    theForm = document.Form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->

搞IT的狐狸的主页 搞IT的狐狸 | 初学一级 | 园豆:0
提问于:2009-07-10 11:51
< >
分享
其他回答(8)
0

单个页面,<%@ page EnableViewState="false" %>

所有页面,在web.config中加入 <pages enableviewstate="false" />

在全局配置:在machine.config中修改 <pages enableviewstate="false" />
enableviewstate优先级别:全局配置 < 程序 < < 控件

完全禁止可以参考163邮箱登录后查看源码。其实是用Ajax读取后台数据。

邀月 | 园豆:25475 (高人七级) | 2009-07-10 11:54
0

方法一:在页面中禁用:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  EnableViewState="false"%>此方法仅对本页面有效!

方法二:在web.config中设置 <pages enableSessionState="true" enableViewState="false" enableViewStateMac="false" />此方法全局生效

方法三:在相应的控件使用时禁用;<asp:ImageButton ID="ImageButton1" runat="server" EnableViewState="false" />

好了,上面三种应该够了吧!楼主加油哦!

chen eric | 园豆:4 (初学一级) | 2009-07-10 11:57
0

楼上2位算了吧,就算全局EnableViewState=false也会产生ViewState的

其实你的<form>标签别写上ruant="server"就不会出现了

Gray Zhang | 园豆:17610 (专家六级) | 2009-07-10 12:39
0

用MVC,来做,就不会产生viewstate了

李.net | 园豆:730 (小虾三级) | 2009-07-10 13:01
0

 如果你禁用了viewstate,那么就没有了啊。

 

禁用方法如楼上所说:

单个页面,<%@ page EnableViewState="false" %>

所有页面,在web.config中加入 <pages enableviewstate="false" />

或者重载PageStatePersister ,将__VIEWSTATE的信息存储在session中、内存中。都可以。这样就起到了给页面减肥的目的。.net就是这个东西比较那个,有时候一个页面600k,光这个隐藏字段就有500多k,太恐怖了。所以,减肥是必要的。

邢少 | 园豆:10926 (专家六级) | 2009-07-10 15:06
0

(4) FORM去掉RUNAT=SERVER 那是不可能的 那程序就没办法"活"了

 

这句话很搞笑噢,那JSP和PHP以及ASP和SHTML不都活不了呢咯,页面数据交互的方式就是用表单,ASP。NET是微软用了code-behind来搞的,让你操作起来方便,不想有VIEWSTATE,你就在页面写

<form action="transfer.aspx" method="get">

  <input type="text" name="txtName" />

  <input type="submit" value="test" />

</form>

然后到transfer.aspx页面里写

string str = Request.Form["txtName"].ToString();

实在清闲 | 园豆:10 (初学一级) | 2009-07-10 17:27
0

这个问题我前一段时间回答过,你还完全可以用response.write一行一行的输出,这样就不会产生viewstate了,我看过很多网站也都这样做,但是我觉得如果这样搞,还不如直接去写asp算了

Vincent Yang | 园豆:573 (小虾三级) | 2009-07-10 19:08
0

我们现在的就没有这些东西,方式很多,Gray Zhang说中了要点,不要runat=server就行了。

并且,aspx页面不见得就是.net,即便是.net,也不见得是webform的处理方式,我们公司用的monorail,我们使用了rails后缀,只要想,我们可以把aspx交给monorail处理。我之前跟一个朋友的程序,也使用了nvelocity模板引擎,都没有viewstate。asp.net mvc没有用过,但是我估计也不可能有viewstate,否则微软搞P啊。

微软的东西让人不知道基础,很多人搞web,结果不知道web是一个什么东西,都以为是codebehind呢。

shunan | 园豆:225 (菜鸟二级) | 2009-07-16 11:08
0

 学习

KivenRo | 园豆:1734 (小虾三级) | 2013-04-03 16:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册