Можно ли использовать get вместо post в веб-формах ASP.NET? - PullRequest
3 голосов
/ 31 марта 2011

У меня есть сайт, который настроен для проверки пользователя время от времени.Каждый раз, когда пользователь проходит проверку, он перенаправляется на страницу входа в систему, которая является другим веб-приложением под IIS.Поскольку пользователь все еще действителен, он будет перенаправлен обратно, но в течение этого времени он потерял данные обратной передачи, в результате чего для всей формы было установлено значение по умолчанию.

Моей первой мыслью было просто отключить состояние просмотра в форме ииспользуйте get вместо post в теге формы

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

Команда get работает, но строка запроса get для состояния просмотра печатается, делая url длинным.Есть ли что-то легко решить?По сути, я хочу полностью отключить viewstate, я пытался использовать enableviewstate, но я не могу заставить его исчезнуть.

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

Вы можете отключить ViewState для своего приложения, используя предложение Гранта. Кроме того, вы можете отключить его для одной страницы в объявлении страницы. Например:

<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" EnableSessionState="ReadOnly" %>
2 голосов
/ 31 марта 2011

Вы пытались установить свойство enableViewState в web.config, чтобы у вас было что-то похожее на:

<pages enableViewState="false">
    ....
</pages>
0 голосов
/ 31 марта 2011

Заголовок слегка противоречит этой проблеме, так как кажется, что ваша настоящая проблема в том, что, хотя вы установили 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...