You must use a delayed rule of the form DialogProlog:>expr to prevent expr from evaluating prematurely.
Expressions given by DialogProlog are evaluated after symbol values are localized and before any expression given as the argument of Dialog is evaluated.