I avoid hotel-like accommodation where possible and opt for apartments that tend to have more space, facilities for cooking (I get tired of eating out at restaurants), and sometimes have a balcony.
Although a bit older/dated, QUEST on James is around $200- per night (I think), has free undercover parking and is directly across the road from Dusit Thai - which has been good in the past. The hotel is also about 2 blocks (an easy 10 minute walk) from the James St restaurant/entertainment strip, where you can dine at Sorrento (Great) or Valentino's (Average) and others. Have been staying there off and on, during the week, for the past 2 years.
When I get sick of staying in town, QUEST Harbour Village in Fremantle has fantastic apartment accommodation in the low $200's - water views, free parking, upstairs/downstairs balcony and not too far from Kailis. About a 20-30 minute drive back to town, but the coast road is great. Staying at Freo breaks up the monotony of the CBD.
Thanks to an earlier poster re the suggestion of the Sebel in East Perth - I saw this when dining at the Royal Hotel (which I would also recommend), and will give it a go next time.
Agree with other posts about some great spots to eat in Mt Lawley, Subiaco and Leederville.