You may need to use addFields
to access Reason__c field explicitly inside constructor. You can build logic in constructor like:
public Case cs {get; set;}
public StackExchangeController(ApexPages.StandardController stdController){
stdController.addFields(new String[]{ 'Reason__c' });
cs = (Case)stdController.getRecord();
cs.Reason = !isReason() ? 'No Reason' : cs.Reason__c;
}
Note: Use ''
instead of 'No Reason'
if you want to unset.
Your visualforce code look like:
<apex:inputField id="reason" value="{!cs.Reason__c}" required="true"/>