是否可以在 ASP.NET Web 表单中使用 get 代替 post?

发布于 2024-10-28 18:16:47 字数 395 浏览 2 评论 0原文

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

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

<form runat="server" method="get" enableviewstate="false">...</form>

命令有效,但打印了获取视图状态的查询字符串,使得 url 很长。有什么简单的方法可以解决这个问题吗?基本上我想做的是完全关闭视图状态,我尝试使用enableviewstate,但我无法让它消失。

I have a site that is set up to validate the user from time to time. Every time the user is validated the user is redirected to the login page, which is another web application under IIS. Since the user is still valid it will be redirected back, but during this time it has lost the postback data making the whole form set to default.

My first thought was to just turn off view state on the form and use get instead of post on the form tag

<form runat="server" method="get" enableviewstate="false">...</form>

The get command works, but the querystring get the view state is printed making the url to long. Is there some easy to solve this? Basically what I want to do is to turn off viewstate completely, I've tried to use the enableviewstate, but I can't get it to dissapear.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

似梦非梦 2024-11-04 18:16:47

您是否尝试过在 web.config 中设置 enableViewState 属性,以便您得到如下所示的内容:

<pages enableViewState="false">
    ....
</pages>

Have you tried setting the enableViewState property within web.config so you'd have something that looks like:

<pages enableViewState="false">
    ....
</pages>
深空失忆 2024-11-04 18:16:47

您可以使用 Grant 的建议在应用程序中禁用视图状态。或者,您可以在页面声明中针对单个页面将其关闭。例如:

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" EnableSessionState="ReadOnly" %>

You can disable viewstate across your application using Grant's suggestion. Alternatively, you could turn it off for a single page in the Page's declaration. For example:

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" EnableSessionState="ReadOnly" %>
坏尐絯℡ 2024-11-04 18:16:47

标题与问题略有矛盾,因为您的实际问题似乎是,尽管您已设置 EnableViewState=False 您仍然将视图状态作为隐藏变量写入页面。

这个问题是同样的,但即使使用这两种方法,您仍然会写入隐藏字段:

您自己的 PageStatePersister:

public class EmptyStatePersister : PageStatePersister
{
    public EmptyStatePersister(Page page) : base(page) { }
    public override void Load() { }
    public override void Save() { }
}

protected override PageStatePersister PageStatePersister
{
    get
    {
        return new EmptyStatePersister(this);
    }
}

您自己的页面类,如链接的问题所描述:

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

所以您'剩下 jQuery:

<script type="text/javascript">
    $(document).ready(function ()
    {
        $("#__EVENTVALIDATION").remove();
        $("#__VIEWSTATE").remove();
    });
</script>

The title contradicts the problem slightly, as it seems that your actual issue is that although you have set EnableViewState=False you are still getting the viewstate written to the page as hidden variables.

This question is along the same lines, but you still get hidden fields written even if you use these two methods:

Your own PageStatePersister:

public class EmptyStatePersister : PageStatePersister
{
    public EmptyStatePersister(Page page) : base(page) { }
    public override void Load() { }
    public override void Save() { }
}

protected override PageStatePersister PageStatePersister
{
    get
    {
        return new EmptyStatePersister(this);
    }
}

Your own page class, as the question linked describes:

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

So you're left with jQuery:

<script type="text/javascript">
    $(document).ready(function ()
    {
        $("#__EVENTVALIDATION").remove();
        $("#__VIEWSTATE").remove();
    });
</script>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文