是否可以在ASP.NET webforms中使用get而不是post?
我有一个网站,是用来验证用户不时。每次验证用户时,都会将用户重定向到登录页面,这是IIS下的另一个web应用程序。由于用户仍然有效,它将被重定向回,但在此期间,它丢失了回发数据,使整个表单设置为默认值 我的第一个想法是关闭表单上的视图状态,并在表单标签上使用get而不是post是否可以在ASP.NET webforms中使用get而不是post?,asp.net,webforms,Asp.net,Webforms,我有一个网站,是用来验证用户不时。每次验证用户时,都会将用户重定向到登录页面,这是IIS下的另一个web应用程序。由于用户仍然有效,它将被重定向回,但在此期间,它丢失了回发数据,使整个表单设置为默认值 我的第一个想法是关闭表单上的视图状态,并在表单标签上使用get而不是post <form runat="server" method="get" enableviewstate="false">...</form> 。。。 get命令起作用,但是querystring
<form runat="server" method="get" enableviewstate="false">...</form>
。。。
get命令起作用,但是querystring get The view state被打印出来,使得url变长。有什么容易解决的办法吗?基本上,我想做的是完全关闭viewstate,我尝试过使用
启用viewstate
,但我无法让它消失 您是否尝试过在web.config中设置enableViewState属性,使其看起来像:
<pages enableViewState="false">
....
</pages>
....
您可以使用Grant的建议在应用程序中禁用viewstate。或者,您可以在页面声明中的单个页面上关闭它。例如:
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" EnableSessionState="ReadOnly" %>
标题与问题稍有矛盾,因为您的实际问题似乎是,尽管您设置了
EnableViewState=False
,但仍将viewstate作为隐藏变量写入页面
是相同的,但即使使用以下两种方法,仍会写入隐藏字段:
您自己的PageStatePersister:
您自己的页面类,如链接的问题所述:
剩下jQuery:
<script type="text/javascript">
$(document).ready(function ()
{
$("#__EVENTVALIDATION").remove();
$("#__VIEWSTATE").remove();
});
</script>
$(文档).ready(函数()
{
$(“#uu事件验证”).remove();
$(“#uu视图状态”).remove();
});
为什么我必须使用javascript来更改表单方法?完全可以在表单标记中设置方法,但这并不能解决我的问题,因为查询字符串仍然很长。还有,我想你误解了我的问题。。。我根本不想要任何viewstate,所以如果我可以去掉它,get请求就可以工作。@Tomas那么,如果没有头或querystring变量传回服务器,您如何建议发送数据?我不知道我是否不清楚,或者您只是不理解我,可能两者都有:)。我没有说我不会传回任何querystring变量或标头。。。我所要求的是在WebForm页面上使用get而不是post,另外,如果我使用get,还可以省略添加到querystring中的viewstate选项,因为viewstate
变量存储在表单中的隐藏字段中。当ViewState
被添加到查询字符串中时,结果查询字符串变长。@Tomas它无法完成,即使使用选项2。不幸的是,您总是会得到一个带有_VIEWSTATE的隐藏字段。
public class EmptyViewStatePage : Page
{
public override bool EnableViewState
{
get
{
return false;
}
set
{
base.EnableViewState = false;
}
}
protected override void SavePageStateToPersistenceMedium(object state)
{
}
protected override object LoadPageStateFromPersistenceMedium()
{
return null;
}
}
<script type="text/javascript">
$(document).ready(function ()
{
$("#__EVENTVALIDATION").remove();
$("#__VIEWSTATE").remove();
});
</script>