Usuário com melhor resposta
Como acessar o conteúdo de uma viewBag?

Pergunta
-
Bom dia galera, estou tendo uma dificuldade imensa em apresentar um conteudo de uma viewBag.....Vou expor todo o contexto.
Tenho uma consulta linq desta forma:
var user = (from u in db.BranchJobs join uc in db.JobCalendars on u.JobCalendarsId equals uc.JobCalendarsId where u.BranchId == id select new { Nome = u.Name, Mondays = uc.Monday, Tuesdays = uc.Tuesday, Wednesdays = uc.Wednesday, Thursdays = uc.Thursday, Fridays = uc.Friday, Saturdays = uc.Saturday, Sundays = uc.Sunday }).ToList();
e atribuo a variavel user a uma viewBag, desta forma:
ViewBag.Cargos = user;
na minha view estou fazendo desta forma:
@foreach(var escalas in ViewBag.Cargos) { <tr> <td> @escalas.Nome </td> </tr> }
só que nÃo consigo acessar as propriedades da viewBag.
O conteúdo dela é este:
var escalas = { Nome = Desenvolvedor, Mondays = True, Tuesdays = True, Wednesdays = True, Thursdays = True, Fridays = True, Saturdays = False, Sundays = False }
alguem saberia como posso usar estes dados? Preciso que cada elemento fique em uma linha da tabela:
Respostas
-
Não entendi muito bem.. se você precisa de uma tela para gravar escalas então é só utilizar essa classe que você criou para armazenar os dados no banco. Mas crie uma nova pergunta para isso já que se trata de outra dúvida :)
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze sexta-feira, 7 de dezembro de 2012 15:18
- Marcado como Resposta Fabio.Junio sexta-feira, 7 de dezembro de 2012 16:09
Todas as Respostas
-
A ViewBag.Cargos é do tipo dynamic então você não terá o intellisense a menos que converta ela para um type, porêm no seu caso você está retornando uma lista de anonymous type então fica dificil converter a ViewBag.
O que você poderia é retornar uma classe concreta para a viewbag:
var user = (from u in db.BranchJobs join uc in db.JobCalendars on u.JobCalendarsId equals uc.JobCalendarsId where u.BranchId == id select new User { Nome = u.Name, Mondays = uc.Monday, Tuesdays = uc.Tuesday, Wednesdays = uc.Wednesday, Thursdays = uc.Thursday, Fridays = uc.Friday, Saturdays = uc.Saturday, Sundays = uc.Sunday }).ToList();
repare que eu deixei 'new User'.
Fazendo isso você poderá converter sua ViewBag:
@foreach(var escalas in (List<User>)ViewBag.Cargos) { <tr> <td> @escalas.Nome </td> </tr> }
e assim você terá o intelissense.
Se você não fizer assim você não conseguirá ver as propriedades de ViewBag.Cargos mas poderá usa-las normalmente.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Fabio.Junio quinta-feira, 6 de dezembro de 2012 14:03
- Não Marcado como Resposta Fabio.Junio sexta-feira, 7 de dezembro de 2012 14:06
-
-
-
-
Então crie, não tem problema, ou você fica sem o intelissense(nesse caso tb não haveria problema).
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta Fabio.Junio quinta-feira, 6 de dezembro de 2012 14:03
- Não Marcado como Resposta Fabio.Junio sexta-feira, 7 de dezembro de 2012 14:06
-
mas nao me preocupo com o intelisence....so quero mesmo é popular a minha tabela com todos os dados da viewBag.....de repente tb, pode haver outra forma de fazer? tipo, nao criar essa view bag......sei lá.....só estou com receio de criar essa nova classe.....
-
-
-
Murilo......pode me sanar outra duvida?
Eu criei uma classe chamada escalas, que contem todos os atributos do contexto acima (união das duas tabelas), mas nao criei esta tabela fisica no banco, agora preciso, tanto excluir como criar novas escalas, e pelo que percebi deverei criar minhas views tipadas com o contexto da tabela escalas, mas como ela nao eh fisica (nao armazena dados), como vou fazer para criar uma nova escala?
-
Não entendi muito bem.. se você precisa de uma tela para gravar escalas então é só utilizar essa classe que você criou para armazenar os dados no banco. Mas crie uma nova pergunta para isso já que se trata de outra dúvida :)
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Editado Murilo Kunze sexta-feira, 7 de dezembro de 2012 15:18
- Marcado como Resposta Fabio.Junio sexta-feira, 7 de dezembro de 2012 16:09