Accompanying the @RSinohara , the path is by Ajax in View . On a system that I write, I use a set of methods implemented using jQuery :
function TrocarCidades(id, estadoId) {
$("#CidadeId").attr('disabled', true);
$("#EstadoId").attr('disabled', true);
$.ajax({
url: "/Estados/SelecionarCidades/" + estadoId,
success: function (data) {
if (id == null) {
$("#BairroId").empty();
$("#BairroId").append('<option value>Selecione uma Cidade...</option>');
}
$("#CidadeId").empty();
$("#CidadeId").append('<option value>Selecione...</option>');
$.each(data, function (index, element) {
$("#CidadeId").append('<option value="' + element.CidadeId + '">' + element.Nome + '</option>');
});
$("#CidadeId").attr('disabled', false);
$("#EstadoId").attr('disabled', false);
$("#CidadeId").val(id);
}
});
}
function TrocarBairros(id, cidadeId) {
$("#BairroId").attr('disabled', true);
$("#CidadeId").attr('disabled', true);
$("#EstadoId").attr('disabled', true);
$.ajax({
url: "/Bairros/SelecionarPorCidade/" + cidadeId,
success: function (data) {
$("#BairroId").empty();
$("#BairroId").append('<option value>Selecione...</option>');
$.each(data, function (index, element) {
$("#BairroId").append('<option value="' + element.BairroId + '">' + element.Nome + '</option>');
});
$("#BairroId").attr('disabled', false);
$("#CidadeId").attr('disabled', false);
$("#EstadoId").attr('disabled', false);
if (id != null) {
$("#BairroId").val(id);
}
}
});
}
$("#CEP").blur(function () {
$.ajax({
url: "/Logradouros/BuscarPorCep/" + $(this).val(),
success: function (data) {
$("#EstadoId").val(data.Bairro.Cidade.EstadoId);
TrocarBairros(data.BairroId, data.Bairro.CidadeId);
TrocarCidades(data.Bairro.CidadeId, data.Bairro.Cidade.EstadoId);
$("#Endereco").val(data.Descricao);
}
});
});
$("#EstadoId").change(function () {
TrocarCidades(null, $(this).val());
});
$("#CidadeId").change(function () {
TrocarBairros(null, $(this).val());
});
This implementation takes into account what districts, cities, and states are DropDownLists . You can simplify this algorithm for your need. That is:
$("#CEP").blur(function () {
$.ajax({
url: /* Url de serviço de busca de CEP */
success: function (data) {
$("#Estado").val(data.Estado);
$("#Bairro").val(data.Bairro);
$("#Cidade").val(data.Cidade);
$("#Endereco").val(data.Endereco);
}
});
});