[ASP.NET MVC 3] Repopulando um formulário com um ViewModel através do JS

E aí, pessoal do GUJ!
Feliz Ano Novo a todos, e que Deus os abençoe! :smiley:

Tô fazendo uma aplicação onde eu quero enviar um ViewModel para meu Controller, popular algumas propriedades e, no retorno, repreencher os campos bindados que tenho do meu formulário. Por exemplo:

[code]
//Essa é a minha View, um exemplo:

@model App.ViewModel.MeuViewModel

@using (Html.BeginForm(“Aplicar”, “Controller”, MethodType.Post, new { id = “form” })) {

@Html.LabelFor(m => m.OpcaoAEscolher)
@Html.DropDownListFor(m => m.OpcaoAEscolher, new SelectList(Model.Opcoes, "ID", "Nome"), "Escolha uma opção")

@Html.DropDownListFor(m => m.ResultadoEscolhido, new SelectList(Model.Resultados, "ID", "Descricao"), "Escolha um resultado)

}

// Essa é minha requisição AJAX, um exemplo:
$.ajax({
dataType: “JSON”,
data: $(’#form’).serialize(),
type: “GET”,
url: “MeuController/MeuMetodoAJAX”,
success: function(meuViewModel) {
// Como popular os campos bind através do js aqui?
}
});

public class MeuController {

[HttpGet]
public ActionResult MeuMetodoAJAX(MeuViewModel model) {

    model.Resultados = // será preenchido com uma consulta usando como parâmetro a opção escolhida, como mostra o formulário acima.
    // Eu retorno um Json, um PartialView, um View, o quê?
}

}[/code]

Grato desde já pela ajuda, galera,
fiquem com Deus! :smiley:

Use JSON:

http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=399

Opa, spidermanx.
Obrigado pela resposta.

Eu faço uso do JSON, sim, mas não é essa a questão.
O meu problema é que eu tenho que ficar reescrevendo controles toda vez depois de um GET. Por exemplo, se eu busco uma coleção e quero adicioná-la a um DropDownList, eu preciso fazer um foreach nessa coleção e ir criando cada option. Eu queria linkar essa coleção que busquei com uma propriedade do meu ViewModel tipado da página e dar um refresh nesse ponto, para não ter que ficar manipulando controles toda hora.
Uma ideia é dar POST na página a cada requisição dessa. Funciona? Sim, mas não fica “bonito” e não é uma boa prática para tal.

Tô dando uma olhada nos ViewModels que o Knockout me proporciona, talvez resolva o que eu preciso.
Mas obrigado de qualquer forma,
fique com Deus! :smiley: