Tutorial :Making my first Create Page with ASP.Net MVC2



Question:

I am attempting to generate my first MVC application. I have a very basic table: Teams: ID,Name. I have created the MVC app ok and the table is listed. Below is the Create View. When it is run I get the message: A value is required. Can you help (sorry this is very basic).

View create.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"     Inherits="System.Web.Mvc.ViewPage<GettingStarted.Models.Team>" %>    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">  Create  </asp:Content>    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">    <h2>Create</h2>    <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>    <% using (Html.BeginForm()) {%>        <fieldset>          <legend>Fields</legend>          <p>              <label for="Name">Name:</label>              <%= Html.TextBox("Name") %>              <%= Html.ValidationMessage("Name", "*") %>          </p>          <p>              <input type="submit" value="Create" />          </p>      </fieldset>    <% } %>    <div>      <%=Html.ActionLink("Back to List", "Index") %>  </div>    </asp:Content>  

with controller teamcontroller:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using System.Web.Mvc;  using System.Web.Mvc.Ajax;  using GettingStarted.Models;  using DB = GettingStarted.Models.GettingStartedDataContext;    namespace GettingStarted.Controllers  {      public class TeamController : Controller      {          // other actions          ...          //          // GET: /Team/Create            public ActionResult Create()          {              return View();          }             //          // POST: /Team/Create            [AcceptVerbs(HttpVerbs.Post)]          public ActionResult Create(Team team)          {                if (ModelState.IsValid)              {                  try                  {                      var db = new DB();                      db.Teams.InsertOnSubmit(team);                      db.SubmitChanges();                      return RedirectToAction("Index");                  }                  catch                  {                      return View(team);                  }              }              return View(team);          }        }  }  


Solution:1

Your Create view is strong type so provide a view model instance:

public ActionResult Create()  {      return View(new Team());  }  

or

public ActionResult Create()  {      return View((Team)null);  }  


Solution:2

The problem may be an annotation on a field in the Model. Have you checked your Model for something like:

public class Team {       [Required(ErrorMessage = "A value is required")]     public string whatEver {get; set;}       ...  }  


Solution:3

A hint: Also add a Create action, which takes Team as parameter, to handle validation errors.

public ActionResult Create(Team team)  {      return View(team);  }  

Also passing a null value to a create form isn't necessary! Your problem might be somewhere else. Can you try to use

<%= Html.TextBoxFor(model => model.Name) %>  <%= Html.ValidationMessageFor(model => model.Name) %>  

instead of

<%= Html.TextBox("Name") %>  <%= Html.ValidationMessage("Name", "*") %>  

?


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »