2009-11-05 127 views
0

我給了一個按鈕一個名爲notetype的屬性。代碼中的訪問控制屬性

<asp:ImageButton ID="bttnSave" notetype="none" runat="server" ImageUrl="~/images/bttnSave.gif" onclick="bttnSave_Click" /> 

我有一個不同的按鈕的點擊功能,設置該變量某種類型。

function addnotes(Type,IncId,Acc,Wit,Claim,Inj,Prop,Media) { 
    var bttnopenmodal = $get('<%=bttnopenmodal.ClientID %>'); 
    var bttnSave = $get('<%=bttnSave.ClientID %>'); 

    if (Type == 'Inc') { 
     bttnSave.notetype = 'Inc'; 

    } 

    bttnopenmodal.click(); 
    return false; 
} 

在按鈕的C#代碼但是:

protected void bttnSave_Click(object sender, ImageClickEventArgs e) 
{ 
    Response.Redirect(bttnSave.Attributes["notetype"]); 
} 

保存按鈕的notetype的值仍然是 '無' 即使我改變它在JavaScript。我甚至提醒要確保它改變了notetype,它確實如此。我試圖用updatepanel更新按鈕無濟於事。我怎樣才能正確更改notetype?

+1

只有表單控件元素的'value'屬性以表單發送(而<'input type =「image」/>'完全不發送)。你不能指望瀏覽器知道發佈''notetype = none''是因爲你將它指定爲一個屬性。這就是''將被用於。 Viewstate讓你忘記了所有這些,直到你試圖在客戶端改變它,並且整個事情爆發。 – 2009-11-05 20:27:03

+0

發佈此作爲答案,我會接受它。我用隱藏的領域。 – Eric 2009-11-05 22:52:37

+0

@Eric:完成並完成。 – 2009-11-05 23:35:59

回答

1

只有表單控件元素的value屬性隨表單發送(並且對於<input type="image" />根本不發送任何內容)。您不能指望瀏覽器知道發送"notetype=none"僅僅是因爲您將其指定爲屬性。這就是<input type="hidden" name="notetype" value="none" />將用於。

Viewstate讓你忘記了所有這些,直到你試圖在客戶端改變它並且整個事情爆發爲止。

1

您的代碼隱藏在客戶端只能更改可發佈的數據。自定義屬性中的數據在回發後不會返回到服務器,因此它只會知道(通過視圖狀態)該屬性在頁面呈現時的價值。

+0

從那以後。除了我可以更改隱藏字段的值並且它有效的事實。 – Eric 2009-11-05 20:10:39

+0

只是不想使用隱藏的字段。 – Eric 2009-11-05 20:11:18