ASP.NET TreeView метод ob_post.post очистить viewstate - PullRequest
0 голосов
/ 01 декабря 2018

Так что в моем приложении Asp.net у меня есть этот элемент управления представлением дерева. пример Этот элемент управления поддерживает событие «перетаскивания», а при событии «drop» срабатывает функция Javascript, вызывающая функцию на стороне сервера, которая обновляет дерево.

Здеськод:

Js
function ob_OnNodeDrop(src, dst, copy)
{
    if(ob_ev("OnNodeDrop"))
    {
        if(typeof ob_post == "object")
        {
            ob_post.AddParam("src", src);
            ob_post.AddParam("dst", dst);
            ob_post.post(reqpage, "OnNodeDrop");
        }
        else
        {
            alert("Please add obout_AJAXPage control to your page to use the server-side events");
        }
     }
}
C#
public string OnNodeDrop(string src, string dst)
        {
            oTreeDB.EventType = TreeDB.EventTypes.UpdateLevel;
            oTreeDB.Fields[TreeDB.StandardFields.ID].Value = src;
            oTreeDB.Fields[TreeDB.StandardFields.ParentID].Value = dst;

            string sResult = oTreeDB.ExecuteEvent();
        }

Тем не менее, этот ob_post.post(reqpage, "OnNodeDrop"), кажется, очищает viewstate страницы, что делает проверку приложения Anti-XSRF неудачной.

Вот часть моегоAnti-XSRF проверка кода:

if ((string)ViewState[AntiXsrfTokenKey] != _antiXsrfTokenValue)
    {
        throw new InvalidOperationException() //the ViewState cannot be null;
    }

Я не хочу проверять, как работает antiXsrf, поэтому мне нужно либо:

1: сделать ob_post.post не очищать viewstate2: используйте __doPostBack вместо.

Я не знаю, как справиться с методом 1. Проблема с методом 2 заключается в том, что ob_post.post только частично обновляет представление и может напрямую вызывать метод в коде.позади.Но __doPostBack обычно вызывает полное обновление страницы и не может напрямую вызывать открытый метод в коде.Кроме того, когда я использую __doPostBack, перетаскиваемый узел в другое место будет возвращаться к исходному месту после postback, даже если состояние изменилось в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...