
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
EmoticonEmoticon