0

I am new to MVC and web development and I am doing some exercise work given to me. The whole thing is quite simple really, but for some reason I cant make the validation StringLength() and Required validation work in the whole project. I dealt with it, checking the views and webconfig files until I simply gave up and made a new project all together.

I did practically the same thing, but for some reason the Required and StringLength validation worked fine on a part of my project but did not work on an another. So I was left again with a partial working project, only this time the part that worked in the first project stopped working in the other.

I added all the scripts I needed: the jquery validation and the unobstrusive

The following is a class I made to add the validations :

 [MetadataType(typeof (PuestoMetaData))]
public partial class Puesto
{

}

public class PuestoMetaData
{

    [Required(ErrorMessage = "El campo es requerido")]
    [StringLength(30, MinimumLength = 3, ErrorMessage = "El campo tiene que tener por lo minimo 3 caracteres y maximo 30 caracteres")]
    public string Descripcion { get; set; }

}

Its controller:

    // GET: Puesto/Create
    public ActionResult Create()
    {
        return View();
    }

    // POST: Puesto/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Id,Descripcion")] Puesto puesto)
    {
        if (ModelState.IsValid)
        {
            db.Puesto.Add(puesto);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(puesto);
    }

Its view:

    @model coello_roy_Act3.Contexto.Puesto

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

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

    <div class="form-horizontal">
        <h4>Puesto</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Descripcion, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Descripcion, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Descripcion, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

I dont know if it is needed, but here is the class created by the entity framework

namespace coello_roy_Act3.Contexto
{
    using System;
    using System.Collections.Generic;

    public partial class Puesto
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Puesto()
        {
            this.Empleado = new HashSet<Empleado>();
        }

        public int Id { get; set; }
        public string Descripcion { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Empleado> Empleado { get; set; }
    }
}
Eduardo
  • 23
  • 1
  • 6
  • Is your Id auto generated? https://stackoverflow.com/questions/10991894/auto-increment-primary-key-in-sql-server-management-studio-2012 – Jephren Naicker Jun 16 '17 at 21:40
  • Yes, but I only need to add validation to description. In my first project the validations for it worked but the rest of the validations of other entities didn't work, so that's why I made the project again, using the same database. – Eduardo Jun 16 '17 at 21:42

0 Answers0