none
Mvc ValidationSummary Duvida RRS feed

  • Pergunta

  • Estou tentando usar o ValidationSummary , porém não dependo do meu modelo para fazer a validação ,  pois o meu Cd_Funcionario é uma tabela e a validação não funciona.

    Honestamente não entendi.

    Muito obrigado.

    @model Lambda.Models.Cd_Funcionario

    @{
        ViewBag.Title = "EditarFuncionario";
    }

    <h2>EditarFuncionario</h2>

    @using (Html.BeginForm()) {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <fieldset>
            <legend>Cd_Funcionario</legend>

            <div class="editor-label">
                @Html.LabelFor(model => model.Cd_Funcionario1)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Cd_Funcionario1)
                @Html.ValidationMessageFor(model => model.Cd_Funcionario1)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Ds_funcionario)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Ds_funcionario)
                @Html.ValidationMessageFor(model => model.Ds_funcionario)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Cd_Rg)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Cd_Rg)
                @Html.ValidationMessageFor(model => model.Cd_Rg)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Cd_CPF)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Cd_CPF)
                @Html.ValidationMessageFor(model => model.Cd_CPF)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Dt_Nasc)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Dt_Nasc)
                @Html.ValidationMessageFor(model => model.Dt_Nasc)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Ds_Cargo)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Ds_Cargo)
                @Html.ValidationMessageFor(model => model.Ds_Cargo)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Ds_Funcao)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Ds_Funcao)
                @Html.ValidationMessageFor(model => model.Ds_Funcao)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Cd_Login)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Cd_Login)
                @Html.ValidationMessageFor(model => model.Cd_Login)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Cd_Status)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Cd_Status)
                @Html.ValidationMessageFor(model => model.Cd_Status)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Template)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Template)
                @Html.ValidationMessageFor(model => model.Template)
            </div>

            <p>
                <input type="submit" value="Save" />
            </p>
        </fieldset>
    }

    <div>
        @Html.ActionLink("Back to List", "Index")
    </div>

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
    }



    • Editado _Manigold_ quarta-feira, 16 de outubro de 2013 20:32
    quarta-feira, 16 de outubro de 2013 20:31

Todas as Respostas

  • Cara você colocou as anotações nas propriedades da classe de modelo ?

    Leonardo Lourenço Silva


    quarta-feira, 16 de outubro de 2013 20:33
  • Olá leo fiz dessa forma:

    public class Funcionario
        {
            [Required(ErrorMessage = "Campo obrigatório")]
            [Range(0, int.MaxValue, ErrorMessage = "Digite numero inteiro")]
            public int Cd_Funcionario1 { get; set; }

            [Required(ErrorMessage = "Campo obrigatório")]
            public string Ds_Cargo { get; set; }

            [Required(ErrorMessage = "Campo obrigatório")]
            public string Ds_funcionario { get; set; }

            public string Cd_Status { get; set; }

            public int Cd_rg { get; set; }
            public string Cd_Cpf { get; set; }
            public string Dt_nasc { get; set; }
            public string Cd_login { get; set; }
            public string Cd_template { get; set; }
            public string Ds_foto { get; set; }

        }

    Porém estou usando a tabela:

    @model Lambda.Models.Cd_Funcionario  e não  @model Lambda.Models.Funcionario

    • Editado _Manigold_ quarta-feira, 16 de outubro de 2013 20:40
    quarta-feira, 16 de outubro de 2013 20:39
  • Olá leo fiz dessa forma:

    public class Funcionario
        {
            [Required(ErrorMessage = "Campo obrigatório")]
            [Range(0, int.MaxValue, ErrorMessage = "Digite numero inteiro")]
            public int Cd_Funcionario1 { get; set; }

            [Required(ErrorMessage = "Campo obrigatório")]
            public string Ds_Cargo { get; set; }

            [Required(ErrorMessage = "Campo obrigatório")]
            public string Ds_funcionario { get; set; }

            public string Cd_Status { get; set; }

            public int Cd_rg { get; set; }
            public string Cd_Cpf { get; set; }
            public string Dt_nasc { get; set; }
            public string Cd_login { get; set; }
            public string Cd_template { get; set; }
            public string Ds_foto { get; set; }

        }

    Porém estou usando a tabela:

    @model Lambda.Models.Cd_Funcionario  e não  @model Lambda.Models.Funcionario

    Como assim a tabela ? essa classe ae Cd_Funcionario ta vindo daonde do EDMX ?

    Tira um print ae dela


    Leonardo Lourenço Silva


    quarta-feira, 16 de outubro de 2013 20:45
  • meu EDMX:

    quarta-feira, 16 de outubro de 2013 20:48
  • Meu HomeController:


    • Editado _Manigold_ quarta-feira, 16 de outubro de 2013 20:50
    quarta-feira, 16 de outubro de 2013 20:50
  • Porquê você não faz um DataMapper, transfere os dados do DBSET(CD_FUNCIONARIO) para a Model (Funcionario) ?

    Ai é só alterar o Model Binder pra pegar a Model Funcionario e adaptar os Helpers da View


    Leonardo Lourenço Silva



    quarta-feira, 16 de outubro de 2013 20:50
  • Meu Modelo:

    quarta-feira, 16 de outubro de 2013 20:51
  • Desculpa Leo eu sou Novo em MVC, estou me adaptando.


    quarta-feira, 16 de outubro de 2013 20:54
  • Me adiciona ae no face e fazemos pelo Team Viewer, conecto na sua máquina e vou te ajudando....

    Leonardo Lourenço Silva


    quarta-feira, 16 de outubro de 2013 20:58
  • Tem algum exemplo ? 

    obrigado.

    quarta-feira, 16 de outubro de 2013 20:58
  • blz assim que possível farei, pois o projeto esta na empresa.

    Muito obrigado.

    quarta-feira, 16 de outubro de 2013 21:02
  • quarta-feira, 16 de outubro de 2013 21:04
  • Tem algum exemplo ? 

    obrigado.

    Você vai ter que criar uma classe PARTIAL com o mesmo nome da classe DBSET(Funcionario) e decorar ela com a anotação MetaDataType apontando pra uma classe que possua os mesmos nomes das colunas da tabela..

    http://ryanhayes.net/blog/data-annotations-for-entity-framework-4-entities-as-an-mvc-model/


    Leonardo Lourenço Silva


    quarta-feira, 16 de outubro de 2013 21:06
  • Olá Leo desculpe a demora , consegui resolver fazendo desta forma:

    Muito obrigado.

    public ActionResult EditarFuncionario(int id)
            {
                using (catracapetrolinaEntities bd = new catracapetrolinaEntities())
                {
                    Funcionario obj = new Funcionario();

                    

                    var query = bd.Cd_Funcionario.FirstOrDefault(x => x.Cd_Funcionario1 == id);


                    if (query != null)
                    {
                        obj.CdFuncionario = Convert.ToInt32(query.Cd_Funcionario1);
                        obj.Dsfuncionario = query.Ds_funcionario;
                        obj.DsCargo = query.Ds_Cargo;
                        obj.CdStatus = query.Cd_Status;
                    }


                    return View(obj);
                }


            }


            [HttpPost]
            public ActionResult EditarFuncionario(Funcionario pFunc)
            {

                if (ModelState.IsValid)
                {
                    using (catracapetrolinaEntities bd = new catracapetrolinaEntities())
                    {


                        Cd_Funcionario obj = new Cd_Funcionario();

                        obj.Cd_Funcionario1 = pFunc.CdFuncionario;
                        obj.Ds_funcionario = pFunc.Dsfuncionario;
                        obj.Ds_Cargo = pFunc.DsCargo;
                        obj.Cd_Status = pFunc.CdStatus;


                        bd.Entry(obj).State = EntityState.Modified;
                        bd.SaveChanges();

                        RedirectToAction("Funcionario");
                    }
                }

                return View();

            }

    quinta-feira, 17 de outubro de 2013 13:35