是否可以在ASP.NET webforms中使用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

我有一个网站,是用来验证用户不时。每次验证用户时,都会将用户重定向到登录页面,这是IIS下的另一个web应用程序。由于用户仍然有效,它将被重定向回,但在此期间,它丢失了回发数据,使整个表单设置为默认值

我的第一个想法是关闭表单上的视图状态,并在表单标签上使用get而不是post

<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>