Передача значений из JavaScript в код ASP.NET - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть элемент управления ASP.NET Image, объявленный как:

<asp:Image runat="server" ID="SortOrder"
AlternateText="Ascending"
ImageUrl="~/images/sort_ascending.gif"
CssClass="Ascending"
EnableViewState="true"
 /> 

Мой код JavaScript:

function ReverseSort() {
    var img = window.event.srcElement;
    if(img.className == "Ascending") {
        img.className = "Descending";
        img.alt = "Descending";
        img.src = "<%= ResolveClientUrl("~/images/sort_descending.gif") %>";
    } else {
        img.className = "Ascending";  
        img.alt = "Ascending";
        img.src = "<%= ResolveClientUrl("~/images/sort_ascending.gif") %>";
    }
}

Я добавил атрибут «onclick» в элемент управления Image в моем коде страницы Page_Load, например:

protected void Page_Load(object sender, EventArgs e) {
    if (IsPostBack)
        return;

    SortOrder.Attributes.Add("onclick", "ReverseSort()");
}

Это мое событие SortOrder.OnClick для моего элемента управления изображениями:

if (SortOrder.AlternateText == "Ascending") {
    /* Sort ascending */
} else {
    /* Sort descending */
}

Моя проблема в том, что SortOrder.AlternateText всегда "Ascending". Кажется, мой код не распознал изменения свойств, внесенных в мой JavaScript.

Ответы [ 2 ]

1 голос
/ 01 ноября 2010

Я бы не ожидал, что это сработает.Атрибуты на стороне сервера управления не отображаются на атрибуты DOM на стороне клиента.Хотя установка AlternateText на сервере приведет к выводу необходимого текста alt, это не улица с двусторонним движением.

Что вы можете сделать, это использовать скрытый серверный элемент управления, чтобы сохранить состояние сортировки.Это сделает скрытый <asp:checkbox>, который вы переключаете с помощью javascript.

0 голосов
/ 01 ноября 2010

Единственное, что отправляется обратно на сервер, это пары имя-значение.Любые атрибуты, измененные с использованием javascript с элементом, остаются в браузере.

...