Я пытаюсь разобраться с сообщениями валидации в ASP.Net MVC. У меня есть следующий вид
<%@ 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>
У меня в контроллере есть этот метод post, который должен отображать сообщение об ошибке, если поле фамилии пустое, я понимаю, что в этой функции нет другой логики, я просто пытаюсь получить подтверждение.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection formValues)
{
if (formValues["Surname"] == string.Empty)
ViewData.ModelState.AddModelError("Surname", "No way");
return View("Create");
}
Когда я запускаю это и нажимаю, чтобы сохранить пользователя, метод Create работает нормально и добавляет ошибку, но затем приложение падает, оно выделяет строку в представлении, которое создает текстовое поле фамилии и говорит: «Не задан экземпляр объекта ". Он работает нормально, если я помещаю что-то в текстовое поле фамилии, и ошибка не добавляется.
Полагаю, я упускаю что-то очень простое, но могу понять что.
Есть идеи?
Спасибо
Gavin