AFAIK Атрибут ReadOnly предназначен для свойства класса. От MSDN
Members that are marked with the ReadOnlyAttribute set to true or that do not have a Set method
cannot be changed. Members that do not have this attribute or that are marked with the
ReadOnlyAttribute set to false are read/write, and they can be changed. The default is No.
Таким образом, вы используете это в своих классах, чтобы предотвратить изменение свойств.(по крайней мере, значение, которое я даю этому атрибуту)
Если вы хотите, чтобы текстовое поле только для чтения, используйте что-то подобное
@Html.TextBox("MyText", "my text", new { @readonly="readonly" })
@ first of readonly говорит компилятору обойти зарезервированное слово