I think the property name, class name, and argument name all being the same is messing up the MVC model-binding magic. If you change:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Text text)
to:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Text values)
it posts back correctly.