こんな記事を書いたら、いろんな人から教えてもらえました。
@okazuki return返す前にModelState.Clear()っす♪
— BEACHSIDE (@BEACH_SIDE) 2015, 1月 21
@okazuki MVC の HtmlHelper のバグっすよ、これ。Expression 版は値を見る優先順位がおかしいので壊れるという
— しばやん (@shibayan) 2015, 1月 21
ということで、ModelState.Clear()を呼び出して解決。これはバグい。