将值从JavaScript传递到ASP.NET代码隐藏

时间:2010-11-01 20:07:27

标签: javascript asp.net code-behind

我将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") %>";
    }
}

我在Page_Load代码隐藏中为Image控件添加了一个“onclick”属性,如下所示:

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始终是“升序”。我的代码隐藏似乎没有认识到我的javascript对属性所做的更改。

2 个答案:

答案 0 :(得分:1)

我不希望这样做。服务器端控件上的属性不映射到客户端的DOM属性。虽然在服务器上设置AlternateText会输出必要的alt文本,但它不是双向的。

您可以使用隐藏的服务器端控件来保持排序状态。您通过javascript切换的隐藏<asp:checkbox>将会执行此操作。

答案 1 :(得分:0)

回发到服务器的唯一事情是名称 - 值对。使用带有元素的javascript更改的任何属性都保留在浏览器中。