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);
}
}
}
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);
}
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;}
...
}
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", "*") %>
?
精彩评论