|
Тема
|
Стартиране на C# код от javascript
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 10.05.05 14:53 |
|
Имам следният проблем: Трябва да направя някои проверки с С# код в ASP.NET страница при изход от нея - клик в/у линк, клик в/у бутона back, изход от браузъра и т.н. До момента установих, че само(?) javascript събитието
window.onbeforeunload хваща всички тези варианти.
Въпроса ми е има ли начин от javascript да изпълня ф-я с С# код в ASPX страницата ?
| |
Тема
|
Re: Стартиране на C# код от javascript
[re: Veso]
|
|
Автор |
Survivor (X) |
Публикувано | 10.05.05 15:10 |
|
Специално за натискане на линк има едно нещо, наречено LinkButton. То прави ресъбмит и в неговия Click евент можеш да правиш каквото си щеш.
За останалото по принцип има начин, - ако скрипта ресъбмитва страницата (нещо като this.form(0).submit() ), като преди това можеш да нагласиш някакви hidden полета или и аз не знам какво.Освен това Page класа има едно събитие Unload, което също би ти свършило работа. Хайде да не питам обаче за какво ти трябва да проверяваш каквото и да било при затваряне на прозореца. Намирисва ми на досаждащ попъп или някаква гавра с юзъра.
но след безсънни дълги нощи станах силен и голям
и вече знам, че мога да се справя сам
| |
Тема
|
Re: Стартиране на C# код от javascript
[re: Survivor]
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 10.05.05 15:27 |
|
Unload() на страницата не прихваща всички тия случаи. Пробвах да прихвана събитията от Global.asax но не става и с тях. Формата ми няма submit button или нещо такова за което да се закача. Случая е по тривиален - страница за поръчки на стоки.
| |
|
Може да използваш callback - в сегашната версия на .NET framework-а го няма вградено(има го във версия 2.), но мжеш да си го заобиколиш по следния начин:
Слагаш си във aspx-a следния скрипт:
<script>
function DoCallback(params)
{
var pageUrl = "ИМЕТО_НА_ТВОЯТА_ФОРМА.aspx" + "?callback=true¶m=" + params;
var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
xmlRequest.open("GET", pageUrl, false);
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlRequest.send(null);
return xmlRequest;
}
function closeIt()
{
DoCallback();
}
</script>
Въпросната фунцкия closeIt() я слагаш във бодито
<body MS_POSITIONING="FlowLayout" bottomMargin="0" leftMargin="0" topMargin="0" rightMargin="0" style="overflow: auto;"
onbeforeunload="closeIt()">
Това което си подал във нея - (частта след въпросителната) ти се появява във queryString-a на формата: така че може във Page_Load() да си правиш една проверка дали
Request.QueryString["callback"] != null и ако не е си го обработваш - може да си слагаш и допълнителни параметри.
нещо от типа:
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["callback"] != null)
{
ПРАВИШ_КАКВОТО_ПРАВИШ - това ти е все едно допълнителен event
return;
}
if(!IsPostBack) ----оттук нататък стандартната технология.
.........
| |
Тема
|
Re: Стартиране на C# код от javascript
[re: Blandings Castle]
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 11.05.05 08:31 |
|
Благодаря ! Ще пробвам и ще пиша за резултата.
| |
Тема
|
Re: Стартиране на C# код от javascript
[re: Blandings Castle]
|
|
Автор | Veso (Нерегистриран) |
Публикувано | 11.05.05 14:03 |
|
В клуба за Веб дизайн и HТМЛ получих вариант на това което си отговорил, но не толкова MS насочено -
| |
|
|
|
|