2014-12-01 111 views
0

我正在使用jQuery切換.NET文本框上的readonly屬性,這兩個屬性都是在JavaScript pageLoad()和動態事件中進行的。在服務器端獲取客戶端只讀屬性?

我可以看到這個屬性是正確添加到文本框HTML,例如:

<input type="text" value="0" id="txtSalesYear1" 
    onkeypress="return IsNumberKey(event, true);" data-control-id="sales-textbox" 
    data-relative-year="1" data-region-id="1" data-subregion-id="2" 
    data-year="2014" readonly> 

然而,當我檢查在服務器端回傳,該readonly屬性爲空:

txtSalesYear1.Attributes.Item("readonly") ' = Nothing 

當我遍歷Attributes集合時,我看到所有其他自定義屬性及其正確的值。我怎樣才能獲得這個只讀屬性?

+2

瀏覽器不會通過表單提交發送此類數據。它僅在窗體內發送input \ textarea控件的值。它不會發送除 – 2014-12-01 20:29:12

+0

之外的任何屬性像上面的註釋一樣,readonly屬性不會發送到服務器。您必須將更改存儲在其他地方,例如隱藏字段。 – 2014-12-01 20:51:23

回答

0

readonly屬性可能是「readonly =」只讀「或」「(空字符串)或空」。嘗試將屬性設置爲readonly =「readonly」,然後查看postback屬性。

假設你提供.NET文本框的輸出(因爲這被標記爲Web窗體),而不是一個標準的HTML文本框,您可以添加標籤就像這樣:

<asp:TextBox ID="TextBox1" runat="server" ReadOnly="true"></asp:TextBox> 

而且呈現源會是什麼樣子:

<input name="TextBox1" type="text" readonly="readonly" id="TextBox1" /> 

然後服務器端

C#

var isReadonly = ((TextBox)TextBox1).ReadOnly; 

VB.NET

Dim isReadonly = DirectCast(TextBox1, TextBox).[ReadOnly] 

而且還有你的控件的只讀屬性值。