Usuário com melhor resposta
DropDownlist

Pergunta
-
Pessoal,
É possível , veja se o que estou fazendo esta correto.
Controle Perfil , Action = Perfil
[AllowAnonymous] public ActionResult Perfil() { DBPerfil = new PerfilDB(); OBJPerfil = new PerfilModel(); ViewBag.Perfil = DBPerfil.Select().ToList(); return RedirectToAction("Registrar", "Conta"); }
View Registrar , Controle Conta.
@model BellitaMVC.Models.CadastroLoginFuncionarioViewModel @{ ViewBag.Title = "Registrar Usúario"; } <h2>Registrar</h2> @using (Html.BeginForm("Registrar", "Conta", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { <div class="form-horizontal"> <h5><i>Usúario</i></h5> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" }) <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Nome, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Funcionario.Nome, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Funcionario.Nome, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Endereco, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Funcionario.Endereco, new { htmlAttributes = new { @class = "form-control"} }) @Html.ValidationMessageFor(model => model.Funcionario.Endereco, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Celular, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Funcionario.Celular, new { htmlAttributes = new { @class = "form-control", mask = "(99)99999-9999" } }) @Html.ValidationMessageFor(model => model.Funcionario.Celular, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Salario, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Funcionario.Salario, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.Funcionario.Salario, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Data, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.EditorFor(model => model.Funcionario.Data, new { htmlAttributes = new { @class = "form-control"} }) @Html.ValidationMessageFor(model => model.Funcionario.Data, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Funcionario.Ativo, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> <div class="checkbox"> @Html.EditorFor(model => model.Funcionario.Ativo) @Html.ValidationMessageFor(model => model.Funcionario.Ativo, "", new { @class = "text-danger" }) </div> </div> </div> <div class="form-group"> @Html.DropDownListFor(model => model.Perfil, ((IEnumerable<BellitaMVC.Models.PerfilModel>)ViewBag.Perfil).Select(option => new SelectListItem { Text = option.idPerfil.ToString() + " - " + option.Perfil.ToString(), Value = option.idPerfil.ToString(), Selected = (Model != null) && (option.idPerfil == Model.Perfil.idPerfil) }), "Escolha uma opção...", new { @class = "form-control" }) </div> <div class="form-group"> <div class="col-md-offset-2 col-md-10"> <input type="submit" value="Salvar" class="btn btn-default" /> </div> </div> </div> } <div> @Html.ActionLink("Retornar", "Conta","Login") </div> @section Scripts{ @Scripts.Render("~/bundles/jquerymaskedinput") @Scripts.Render("~/bundles/jqueryval") }
Retorna nullo.
- Editado Rodrigo Schwinn terça-feira, 24 de janeiro de 2017 13:58
Respostas
-
O problema é que a viewbag nao sobrevive à uma redireçao.
Veja: voce chama perfil e carrega a viewbag. Depois voce redirige para uma acao Registrar (note que o controler é invocado novamente) e é nessa açao que a view é renderizada. A viewbag perfil deveria ser populada nessa açao.
Caso voce queira que a informaçao sobreviva à uma redireçao, use TempData
veja mais aqui:
https://www.codeproject.com/tips/827059/data-passing-mechanism-in-mvc-architecture
http://www.eduardopires.net.br/2013/06/asp-net-mvc-viewdata-viewbag-tempdata/
https://robsoncastilho.com.br/2011/02/10/asp-net-mvc-usando-a-colecao-tempdata/
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator terça-feira, 24 de janeiro de 2017 15:19
- Sugerido como Resposta Fabio Rosa terça-feira, 24 de janeiro de 2017 15:36
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:32
-
Sim... sobrevive, mas o valor dele é suprimido logo apos a sua utilizaçao. Caso voce queira algo que sobreviva por mais tempo o jeito ser usar sessao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:33
-
Rodrigo,
Uma informação em TempData criada em um Controller persiste após um redirect entre actions, ela é propria para trocar informações entre controllers, mas quando houver um request da informação do TempData o mesmo se tornará nulo novamente
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:33
Todas as Respostas
-
O problema é que a viewbag nao sobrevive à uma redireçao.
Veja: voce chama perfil e carrega a viewbag. Depois voce redirige para uma acao Registrar (note que o controler é invocado novamente) e é nessa açao que a view é renderizada. A viewbag perfil deveria ser populada nessa açao.
Caso voce queira que a informaçao sobreviva à uma redireçao, use TempData
veja mais aqui:
https://www.codeproject.com/tips/827059/data-passing-mechanism-in-mvc-architecture
http://www.eduardopires.net.br/2013/06/asp-net-mvc-viewdata-viewbag-tempdata/
https://robsoncastilho.com.br/2011/02/10/asp-net-mvc-usando-a-colecao-tempdata/
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam TrindadeModerator terça-feira, 24 de janeiro de 2017 15:19
- Sugerido como Resposta Fabio Rosa terça-feira, 24 de janeiro de 2017 15:36
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:32
-
-
Sim... sobrevive, mas o valor dele é suprimido logo apos a sua utilizaçao. Caso voce queira algo que sobreviva por mais tempo o jeito ser usar sessao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:33
-
Rodrigo,
Uma informação em TempData criada em um Controller persiste após um redirect entre actions, ela é propria para trocar informações entre controllers, mas quando houver um request da informação do TempData o mesmo se tornará nulo novamente
Diego Almeida Barreto</strong> <br/> <em>System Analyst / Software Developer</em> <br/> <img </p> </div>
- Marcado como Resposta Rodrigo Schwinn quinta-feira, 2 de fevereiro de 2017 13:33
-
-
Sugiro voce abrir um novo post. Esta sua nova duvida me parece desconectada da duvida principal.
Caso alguma de nossas respostas tenha resolvido sua duvida, nao esqueca de marcar e principalmente votar.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-