下面的代码是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();
}
}
// -->
单个页面,<%@ page EnableViewState="false" %>
所有页面,在web.config中加入 <pages enableviewstate="false" />
在全局配置:在machine.config中修改 <pages enableviewstate="false" />
enableviewstate优先级别:全局配置 < 程序 < 页 < 控件
完全禁止可以参考163邮箱登录后查看源码。其实是用Ajax读取后台数据。
方法一:在页面中禁用:<%@ 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" />
好了,上面三种应该够了吧!楼主加油哦!
楼上2位算了吧,就算全局EnableViewState=false也会产生ViewState的
其实你的<form>标签别写上ruant="server"就不会出现了
用MVC,来做,就不会产生viewstate了
如果你禁用了viewstate,那么就没有了啊。
禁用方法如楼上所说: 单个页面,<%@ page EnableViewState="false" %> 所有页面,在web.config中加入 <pages enableviewstate="false" />
或者重载PageStatePersister ,将__VIEWSTATE的信息存储在session中、内存中。都可以。这样就起到了给页面减肥的目的。.net就是这个东西比较那个,有时候一个页面600k,光这个隐藏字段就有500多k,太恐怖了。所以,减肥是必要的。
(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();
这个问题我前一段时间回答过,你还完全可以用response.write一行一行的输出,这样就不会产生viewstate了,我看过很多网站也都这样做,但是我觉得如果这样搞,还不如直接去写asp算了
我们现在的就没有这些东西,方式很多,Gray Zhang说中了要点,不要runat=server就行了。
并且,aspx页面不见得就是.net,即便是.net,也不见得是webform的处理方式,我们公司用的monorail,我们使用了rails后缀,只要想,我们可以把aspx交给monorail处理。我之前跟一个朋友的程序,也使用了nvelocity模板引擎,都没有viewstate。asp.net mvc没有用过,但是我估计也不可能有viewstate,否则微软搞P啊。
微软的东西让人不知道基础,很多人搞web,结果不知道web是一个什么东西,都以为是codebehind呢。
学习