- Fast solution
The fastest solution is for sure to simulate a readonly textbox. That can be achieved by creating a CSS class that mimics the style of a readonly text field. Moreover to avoid that the user is able to change the content of the text-field (which is the intended behaviour of a readonly field), you return "false" on the onkeypress, onkeyup and onkeydown events. The effect of this solution is that you have a normal textbox wherefore its viewstate will also be treated normally.
Note: You should take care the the user is able to navigate over the field by using the tab-key. That can either be achieved by setting the tabindex to "-1" s.t. the field never receives the focus or you don't return "false" on the event handlers in case that the "tab"-key was pressed.
<asp:TextBox ID="txbWorkOfficeCompanyCode" runat="server" CssClass="m text readonly" onkeydown="return false;" onkeypress="return false;" onkeyup="return false;">
- Cleaner solution
The cleaner solution is to exploit the ASP.net Ajax functionalities and create a TextBoxExtender which includes the functionalities mentioned in point 1. This solution is cleaner since you could add the extender on a text-field without directly modifying the textbox itself. Moreover it facilitates reusability which is a major point why this solution should be preferred.