After having written the text in the text box, Did you observe the html?
Does it appear as innerText (in that case getText()) or value attribute (in that case getAttribute('value'))?
Also you code about getAttribute does not look right -
driver.findElement(By.id("ctl00_ctl00_mainContent_bodyContentPlaceHolder_nameInputControl_txtFirstName").getAttribute("ctl00$ctl00$mainContent
$bodyContentPlaceHolder$nameInputControl$txtFirstName")
Herein - "ctl00$ctl00$mainContent $bodyContentPlaceHolder$nameInputControl$txtFirstName" is the name attribute. If you were wanting to get the value of name attribute then you would use it as -
river.findElement(By.id("ctl00_ctl00_mainContent_bodyContentPlaceHolder_nameInputControl_txtFirstName").getAttribute("name")
~tarun