Ich versuche, die Validierungsnachrichten in ASP.Net MVC in den Griff zu bekommen. Ich habe die folgende AnsichtASP.Net MVC und Validierungsnachrichten
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create User</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
Username : <%= Html.TextBox("Username") %>
</p>
<p>
Forename : <%= Html.TextBox("Forename") %>
<%= Html.ValidationMessage("Forename", "*") %>
</p>
<p>
Surname : <%= Html.TextBox("Surname","") %>
<%= Html.ValidationMessage("Surname", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="head" runat="server">
<title><%= ViewData["ProjectTitle"] %> - Create User</title>
</asp:Content>
ich diesen post-Methode in meinem Controller dann haben die eine Fehlermeldung angezeigt, wenn der Name Feld leer soll, ich weiß, es gibt keine andere Logik ist in dieser Funktion im nur versuchen, Bekomme meinen Kopf rund um die Validierung.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formValues)
{
if (formValues["Surname"] == string.Empty)
ViewData.ModelState.AddModelError("Surname", "No way");
return View("Create");
}
Wenn ich dies ausführen und klicken Sie auf einen Benutzer speichern die Methode Create läuft gut und fügt den Fehler, aber dann die Anwendung umfällt, hightlights es die Zeile in der Ansicht, die den Namen Textbox erstellt und sagt: „Nicht auf eine Instanz des Objekts gesetzt ". Es läuft gut, wenn ich etwas in die Textbox des Nachnamens lege und der Fehler nicht hinzugefügt wird.
Ich denke, ich vermisse etwas wirklich einfaches, aber kann was erarbeiten.
Irgendwelche Ideen?
Dank
Gavin
Wo die Meldung „nicht auf eine Instanz des Objekts festgelegt“ wird gesetzt wird? –
es passiert auf dieser Linie Nachname: <% = Html.TextBox ("Nachname", "")%> – Gavin
Hmm, ich denke, es ist wegen des zweiten Arguments. Es sucht nach einem "" (leeren) Schlüssel in ViewData und es wirft Objektreferenz. –