Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Въпрос за ViewState

Featured Replies

Може ли някой да ми обясни какви са тези числа във началото на всеки ViewState и дали има някакъв начин да определим какви числа точно да има ? Ето пример:

Публикувано изображение

Взимаш един Red Gate Reflector - декомпилираш съответното асембли и му четеш кода. Разбира се, че се шегувам! Това не е твоя работа. Структурата на ViewState трябва да е прозрачна за теб. Каквото слагаш вътре, трябва да го намериш пак там - останалото не е твоя работа. Учи се да използваш правилно API-а.

  • Автор

Ъмм, малко съм нов във .NET програмирането... И ми трябва тези първи числа да са "-1899288395". Има ли начин да постигна това ?

  • Автор

Това което искам да направя е да създам ViewStatе в който да има следния текст:

/CSS/Base/CSS/AllCSS.ashx?v=20110616qrwef&t=RBX2
~/Testing/RBX2Style.css
/Login/ResetPassword.aspx?Ticket=590b8e60-0fc3-4367-bdec-6eaae3737cba
jjsword

И също така, числата в началото да бъдат "-1899288395".

За да създам ViewState, използвам xampp със поддръжка на ASP.NET и следната страница:

<script  runat="server">
Sub submit(Sender As Object, e As EventArgs) 
   label1.Text=txt1.Text
   label2.Text=txt2.Text
   label3.Text=txt3.Text
   label4.Text=txt4.Text
End Sub
</script>

<html>
<body>

<form runat="server">
Write lines of ViewState: <br/>
<asp:TextBox id="txt1" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt2" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt3" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt4" Width="200" runat="server" /> <br/>
<asp:Button id="b1" Text="Launch!" OnClick="submit" runat="server" />
<p><asp:Label id="label1" runat="server" /></p>
<p><asp:Label id="label2" runat="server" /></p>
<p><asp:Label id="label3" runat="server" /></p>
<p><asp:Label id="label4" runat="server" /></p>
</form>

</body>
</html>

И като цяло ми се получава следния ViewState:

-698804330
/CSS/Base/CSS/AllCSS.ashx?v=20110616qrwef&t=RBX2
~/Testing/RBX2Style.css
/Login/ResetPassword.aspx?Ticket=590b8e60-0fc3-4367-bdec-6eaae3737cba
jjsword

Точно това което ми трябва, само дето числата в началото са различни.

От google научих че тези числа са един вид колко е дълъг самия ViewState или нещо подобно, но на практика представляват дължина на нещо във ViewState-а или самия ViewState. Или поне така разбрах. Ето го и оригиналния ViewState:

/wEPDwULLTE4OTkyODgzOTUPZBYCZg9kFgRmD2QWBAIEDxYCHgRocmVmBTAvQ1NTL0Jhc2UvQ1NTL0FsbENTUy5hc2h4P3Y9MjAxMTA2MTZxcndlZiZ0PVJCWDJkAgUPFgQfAAUXfi9UZXN0aW5nL1JCWDJTdHlsZS5jc3MeB1Zpc2libGVoZAIBEBYCHgZhY3Rpb24FRS9Mb2dpbi9SZXNldFBhc3N3b3JkLmFzcHg/VGlja2V0PTU5MGI4ZTYwLTBmYzMtNDM2Ny1iZGVjLTZlYWFlMzczN2NiYWQWBAICDw8WAh8BaGRkAg4PZBYCAgEPDxYCHgRUZXh0BQd6b21ieTY1ZGQYBQUiY3RsMDAkQ2xpZW50SW5zdGFsbGVyJE11bHRpVmlld1J1bg8PZAIEZAUjY3RsMDAkcmJ4R29vZ2xlQW5hbHl0aWNzJE11bHRpVmlldzEPD2QCAWQFI2N0bDAwJExlZnRHdXR0ZXJBZCRBc3luY0FkTXVsdGlWaWV3Dw9kZmQFJGN0bDAwJFJpZ2h0R3V0dGVyQWQkQXN5bmNBZE11bHRpVmlldw8PZGZkBSxjdGwwMCRjcGhCYW5uZXJBZCRCYW5uZXJBZHMkQXN5bmNBZE11bHRpVmlldw8PZGZkRG/W7N1xl45KkIZaPy9Nrs28Pak=

А ето това е моя:

/wEPDwUKLTY5ODgwNDMzMA9kFgICAQ9kFggCCw8PFgIeBFRleHQFMC9DU1MvQmFzZS9DU1MvQWxsQ1NTLmFzaHg/dj0yMDExMDYxNnFyd2VmJnQ9UkJYMmRkAg0PDxYCHwAFF34vVGVzdGluZy9SQlgyU3R5bGUuY3NzZGQCDw8PFgIfAAVFL0xvZ2luL1Jlc2V0UGFzc3dvcmQuYXNweD9UaWNrZXQ9NTkwYjhlNjAtMGZjMy00MzY3LWJkZWMtNmVhYWUzNzM3Y2JhZGQCEQ8PFgIfAAUHampzd29yZGRkZLKs+0bBUyKcmNyxHqPDDN1bc0Kq

И да, забелязвам че моя е много по-кратък от оригинала, обаче наистина не разбирам как точно да правя ViewState тъй като от скоро се занимавам със ASP.NET, така че ако можеш да ми помогнеш с това, ще съм ти много благодарен. Мерси предварително! :clap:

Редактирано от SoulTrigger (преглед на промените)

Пак не казваш какво искаш. Не е твоя работа какво пише във ViewState, освен ако ти не си добавил експлицитно въпросното велю. Тогава, ВюСтейт-а трябва да ти го върне (това проверено става). Всичко останало не те интересува - за теб е абстракция! Недей да разчиташ на такива работи - със следваща имплментация или дори сървис пак може да се променят!

  • Автор

Добре, тогава ти го казвам така- единственото нещо което искам е да променя във оригиналния ViewState който дадох горе от "zomby65" да пише "jjsword". Нищо повече. Ето ViewState-a отново:

/wEPDwULLTE4OTkyODgzOTUPZBYCZg9kFgRmD2QWBAIEDxYCHgRocmVmBTAvQ1NTL0Jhc2UvQ1NTL0FsbENTUy5hc2h4P3Y9MjAxMTA2MTZxcndlZiZ0PVJCWDJkAgUPFgQfAAUXfi9UZXN0aW5nL1JCWDJTdHlsZS5jc3MeB1Zpc2libGVoZAIBEBYCHgZhY3Rpb24FRS9Mb2dpbi9SZXNldFBhc3N3b3JkLmFzcHg/VGlja2V0PTU5MGI4ZTYwLTBmYzMtNDM2Ny1iZGVjLTZlYWFlMzczN2NiYWQWBAICDw8WAh8BaGRkAg4PZBYCAgEPDxYCHgRUZXh0BQd6b21ieTY1ZGQYBQUiY3RsMDAkQ2xpZW50SW5zdGFsbGVyJE11bHRpVmlld1J1bg8PZAIEZAUjY3RsMDAkcmJ4R29vZ2xlQW5hbHl0aWNzJE11bHRpVmlldzEPD2QCAWQFI2N0bDAwJExlZnRHdXR0ZXJBZCRBc3luY0FkTXVsdGlWaWV3Dw9kZmQFJGN0bDAwJFJpZ2h0R3V0dGVyQWQkQXN5bmNBZE11bHRpVmlldw8PZGZkBSxjdGwwMCRjcGhCYW5uZXJBZCRCYW5uZXJBZHMkQXN5bmNBZE11bHRpVmlldw8PZGZkRG/W7N1xl45KkIZaPy9Nrs28Pak=

Това искам... Възможно ли е да се направи без да знам каквото и да било повече за ViewState-а и как...

Защо ми се струва, че се опитваш да подмениш аутентикационната информация. Тази тема май, май си заминава по предназначение. Капитане, хвърли едно око тук...

  • Автор

Не се опитвам да заменя нищо... Просто правя страница по подобие на друга, вече създадена и правя малко промени, а това е една от тях... И всъщност главната...

  • Автор

Ъммм, по-горе го казах, но ще го повторя пак- нов съм със ASP.NET и нямам никаква идея какво трябва да направя като ми каза да го делигирам на ASPX engine-а... Може ли да ми обясниш малко по-подробно моля ?

Това означава, че с ViewState-а се работи, както се работи с обикновените речници.

Ако ти трябва да добавиш елемент викаш:

ViewState.Add(<key_name>, <object>);

Ако ти трябва да прочетеш данните свързани с даден ключ ползваш :

ViewState[<key_name>]

Ако ти трябва да изтриеш данните свързани с даден ключ ползваш :

ViewState.Remove(<key_name>);

Останало не е твоя грижа. Нямаш работа да пипаш там! Това и имам предвид, като казвам да делегираш останалото на ASPX енджина - да го оставиш той сам да се оправя със съдържанието и големината и бройката на недефинираните от теб елементи.

Пак ти казвам, обясни ни какво искаш да направиш, но на фукнционално ниво, така най-добре ще знаем как да ти помогнем. Примерно: - Искам да направя ASPX страница, която да приема еди какви си данни и при натискане на еди кой си бутон да прави еди какво си. Ако имаш повече от един бутон описваш всичките по този начин.

  • Автор

Ами всъщност, това което сега ми каза горе долу ми изясни как трябва да направя това което искам и имам само още 2 въпроса. Първия е, какво трябва да напиша на key_name ? Ако примерно искам от ViewState-a който дадох по-горе:

/wEPDwULLTE4OTkyODgzOTUPZBYCZg9kFgRmD2QWBAIEDxYCHgRocmVmBTAvQ1NTL0Jhc2UvQ1NTL0FsbENTUy5hc2h4P3Y9MjAxMTA2MTZxcndlZiZ0PVJCWDJkAgUPFgQfAAUXfi9UZXN0aW5nL1JCWDJTdHlsZS5jc3MeB1Zpc2libGVoZAIBEBYCHgZhY3Rpb24FRS9Mb2dpbi9SZXNldFBhc3N3b3JkLmFzcHg/VGlja2V0PTU5MGI4ZTYwLTBmYzMtNDM2Ny1iZGVjLTZlYWFlMzczN2NiYWQWBAICDw8WAh8BaGRkAg4PZBYCAgEPDxYCHgRUZXh0BQd6b21ieTY1ZGQYBQUiY3RsMDAkQ2xpZW50SW5zdGFsbGVyJE11bHRpVmlld1J1bg8PZAIEZAUjY3RsMDAkcmJ4R29vZ2xlQW5hbHl0aWNzJE11bHRpVmlldzEPD2QCAWQFI2N0bDAwJExlZnRHdXR0ZXJBZCRBc3luY0FkTXVsdGlWaWV3Dw9kZmQFJGN0bDAwJFJpZ2h0R3V0dGVyQWQkQXN5bmNBZE11bHRpVmlldw8PZGZkBSxjdGwwMCRjcGhCYW5uZXJBZCRCYW5uZXJBZHMkQXN5bmNBZE11bHRpVmlldw8PZGZkRG/W7N1xl45KkIZaPy9Nrs28Pak=

Който декодиран изглежда така:

-1899288395
/CSS/Base/CSS/AllCSS.ashx?v=20110616qrwef&t=RBX2
~/Testing/RBX2Style.css
/Login/ResetPassword.aspx?Ticket=590b8e60-0fc3-4367-bdec-6eaae3737cba
zomby65

Ако исках да променя само и единствено "zomby65" на "jjsword", мога ли да направя следното:

ViewState.Remove("zomby65");
ViewState.Add("jjsword");

Най-вероятно не мога защото не разбирам какво е key_name-а, така че както казах, ако може да ми го обясниш и да ми дадеш примери защото така бих разбрал най-добре.

Иии, втория ми въпрос е дали мога да използвам следната страница, разбира се след като добавя редовете за Remove и Add от ViewState-a:

<script  runat="server">
Sub submit(Sender As Object, e As EventArgs) 
   label1.Text=txt1.Text
   label2.Text=txt2.Text
   label3.Text=txt3.Text
   label4.Text=txt4.Text
End Sub
</script>

<html>
<body>

<form runat="server">
Write lines of ViewState: <br/>
<asp:TextBox id="txt1" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt2" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt3" Width="200" runat="server" /> <br/>
<asp:TextBox id="txt4" Width="200" runat="server" /> <br/>
<asp:Button id="b1" Text="Launch!" OnClick="submit" runat="server" />
<p><asp:Label id="label1" runat="server" /></p>
<p><asp:Label id="label2" runat="server" /></p>
<p><asp:Label id="label3" runat="server" /></p>
<p><asp:Label id="label4" runat="server" /></p>
</form>

</body>
</html>

Мерси предварително. :camera2:

  • Автор

Искам да направя нещо като своя собствена страница по подобие на тази където аз да съм админ и за да мога да съм ми трябва това. Наистина не разбирам защо питаш толкова много въпроси... Какво значение има ? Трудно е да го обясня и моля те сега не питай: "Защо би ти трябвало такова нещо за да се направиш админ ?". Еми трябва ми, какво да направя. Не може ли просто да ми помогнеш да го разбера ? Нов съм със ASP.NET и просто търся малко помощ за да се науча. Това ми трябва и това искам... Моля, отговори ми на въпросите които зададох във предишния си пост. И тъй като порових във google и видях че страницата която аз ползвам надали ще може да ми помогне, много бих бил благодарен ако ми дадеш пример за страница(код) който мога да ползвам заедно във примерите на ViewState.Add и ViewState.Remove. Благодаря.

Значи правилно съм си помислил, че искаш да подмениш аутентикационната информация. Както и да е - няма да успееш.

Работата с ViewState е много лесна - в код бихайнд-а се добавя, маха или чете информация в него. Примерно Ако искаш да съхраниш мъничко информация там (нека в нашия случай е текущото време) до следващия рикуест - без да я слагаш в сесията. Пишеш ViewState.Add("currentTime", DateTime.Now); Името на ключа за достъп е без значение, но трябва да го знаеш за да се добереш после информацията - (DateTime)ViewState["currentTime"]; Съответно и триенето ViewState.Remove("currentTime");. Ето тук можеш да видиш всички методи и как се работи с тях. И безплатен съвет от мен, не се пъхай където не ти е работа. Информацията, която ти дадох няма да ти помогне в това начинание!

  • Автор

Добре, а пак да питам- има ли начин да променя числата в началото на всеки ViewState ? Те всъщност какво точно са ? От това което намерих във google разбрах че е дължината на самия ViewState един вид. Така ли е ?

  • Автор

Добре, наистина не разбирам защото не може да ми обясниш какви са числата във началото на всеки ViewState ? Това е единственото нещо което искам да знам... Какво те интересува къде ще го прилагам... Просто искам да го науча... Това е хубаво нещо така че просто не разбирам защо не искаш да ми го обясниш и казваш че темата е изчерпана...

Защото не е етично да променяш съдържанието на ViewState за да заблудиш отсрещната машина! Затова и аз не искам да ти помагам в това начинание!

  • Автор

Добре, виж, това че мислиш така е супер, но вече съм наистина отчаян в това и сам не мога да намеря отговора. Умолявам те, само ми обясни как да го направя, пък аз ако реша да го правя, си е на моята глава. Единственото нещо което те моля да ми помогнеш със, е да разбера как работи и дали мога да го променя и как. Не те моля да ми помагаш със самото действие. Говорим за чиста теория. Просто вече нямам други опции и както казах, сам не мога да си открия отговора, така че моля, обясни ми го... :speak:

Момче, ако се беше поинтересувал, щеше да разбереш, че не отговарям на лични. Но да приемем, че си изпуснал да го направиш. Не разбирам, за какво ме търсиш повече. Обясних ти документирания начин за работа с този обект, дадох ти линк към останалата част от документацията. Не мога да ти дам информация върху недокументирана функционалност. Това, за което питаш е интърнал, имплементация, която най-вероятно се различава при Microsoft и Ximian. С други думи, дори и да разбереш алгоритъма, най-вероятно няма да можеш да подправиш Вю Стейта по ред причини и това е умишлено заложено в системата. Навярно ще си недоволен от отговора, но това е положението. Последен съвет - не се занимавай с такива неща.

  • Автор

Ясно. Е, въпреки всичко, благодаря много за отделеното време и съжалявам за личното съобщение, не съм забелязал. Ще видя какво мога да направя и така. Пак- мерси много.

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.