Как мне установить значение для сеанса в asp.net для события onClick обычного htmlElement? - PullRequest
1 голос
/ 17 марта 2010

Мне нужно создать функцию, которая получает ключ сеанса и значение сеанса, и вызывать эту функцию для обычного события HTML onClick.Когда эта функция вызывается, переменной Session присваивается ключ, который я отправил с отправленным значением.Пока у меня есть это:

<script runat="server" type="text/C#">
        protected void setSessionValue(string key, string value)
        {
            Session[key] = value;
        }  
</script>

Но когда я пытаюсь позвонить, если так:

onclick="setSessionValue('itemID','3345');"

Не работает и выдает ошибку.Любая помощь?Я использую c # и asp.net, но я не могу использовать код позади, и мне нужно все работать со страницы.

Ответы [ 5 ]

2 голосов
/ 17 марта 2010

Вы пытаетесь вызвать код на стороне сервера (C #, VB.NET) со стороны на стороне клиента (Javascript).

Это невозможно.

Вы можете изменить свой HTML-элемент управления на стороне сервера, добавив к нему атрибут runat="server" - вам также потребуется изменить тип на тот, который распознается на стороне сервера, а именно <asp:HtmlLink />.

2 голосов
/ 17 марта 2010

Вы пытаетесь вызвать метод сервера из javascript на стороне клиента. Вы можете сделать то, что предложил Одед, или использовать ASP.NET Ajax для достижения того же.

Приведенная ниже ссылка будет хорошей отправной точкой для того, как сделать это с помощью ASP.NET Ajax.

ASP.NET Ajax Предоставление веб-сервисов Ajax

Обновление 1:

Еще одна полезная ссылка

2 голосов
/ 17 марта 2010

Невозможно установить что-либо для сеанса с клиента, поскольку сеанс хранится на сервере.

0 голосов
/ 17 марта 2010

Хорошо. Мне удалось найти решение самостоятельно благодаря всем вашим предложениям, послушайте это. Я добавил функцию JavaScript следующим образом:

function setSessionValue(key, value) {
     $.post('setSession.aspx?key=' + key + '&value=' + value);
}

и добавил файл aspx со следующим кодом:

<%@ Page Language="C#" %>
<% 
    Session[Request["key"]] = Request["value"]; 
%>

В основном это работало просто отлично, все, что мне было нужно, это немного jQuery. Спасибо всем за ваши предложения.

0 голосов
/ 17 марта 2010

Попробуйте использовать

OnServerClick="setSessionValue('itemID','3345');"

вместо

onclick="setSessionValue('itemID','3345');"

...