TextBoxFor – mostrando valor errado

Ok, eu tenho um estranho aqui. Eu sei que o valor está sendo passado para a propriedade corretamente, pois isso funciona bem:

@Html.TextBox("Foo", Model.Foo, new { @class = "bar" }) 

Agora, se eu fizer isso:

 @Html.TextBoxFor(m => m.Foo, new { @class = "bar" }) 

Isso mostra um valor incorreto. Eu não tenho absolutamente nenhuma idéia de onde esse valor está vindo. Para algumas páginas, mostra uma versão minúscula do que deveria ser, outras vezes, mostra o valor da checkbox de texto ao lado dela. Estou perplexo. É a única checkbox de texto que faz isso. Eu também tenho um auxiliar de razor na página que usa esse valor exato para exibir o título da página, e isso mostra corretamente.

Eu não me importo de usar o @Html.TextBox() para esse em particular, mas eu gostaria de @Html.TextBox() .

Alguém mais tinha algo random como isso acontecer? Eu tenho alguns controles nesta página em particular e é o único que isso acontece.

Ah, eu acabei de encontrar o culpado. É o valor de roteamento da URL! ri muito

No meu arquivo global, eu tinha {something}/{whatever}/{id}/{foo} , {foo} sendo um parâmetro opcional lá apenas para fazer com que o URL da página parecesse humano.

É interessante que a expressão usada em TextBoxFor esteja puxando da URL em vez do viewmodel. Eu teria pensado que teria lido o modelo antes de ir para a URL? Mesmo intellisense puxa do modelo. Isso é algum tipo de bug?

Nota para si: Sempre verifique se as propriedades têm nomes diferentes!

Espero que esta experiência ajude os outros.

Você poderia postar algum código da View onde isso está acontecendo, assim como do Model? É provavelmente algo lá em oposição ao método @Html.TextBoxFor() .

Isso aconteceu comigo ao fazer uma chamada ajax para criar uma entidade e, após o sucesso, recarregar a lista de entidades com uma visão parcial. Durante o recarregamento, as checkboxs de texto na exibição estavam tomando o valor da nova entidade adicionada para todos os itens da lista. Adicionando ModelState.Clear(); para o código do servidor consertado.