Я начинаю изучать Asp.net и C# около недели. До сих пор я развивался в PHP и Symfony, поэтому для меня это довольно большой переход. Я изучаю Asp.net из книги ASP.NET MVC 4 в действии.ASP.NET Новичок: Форма roundtrip с проверкой модели
Я пытаюсь проверить модель, но я не могу найти что-либо в Интернете, которое поможет новичку, как я. Модель проверяет форму контакта с именем, адресом электронной почты и сообщением. Простой, правда? Не для меня.
Это модель ...
public class ContactModel
{
[Required(ErrorMessage = "The name has to be provided, even a fictional one")]
public string Name { set; get; }
[Required(ErrorMessage = "Email address has to be provided, even a invalid one")]
[DataType(DataType.EmailAddress)]
public string Email { set; get; }
[Required(ErrorMessage = "Don't be lazy. Write a message")]
[DataType(DataType.MultilineText)]
public string Message { set; get; }
}
У меня есть контроллер с именем ContactController. Он имеет эти действия ...
public ActionResult Contact()
{
ContactModel contactModel = new ContactModel();
return View(contactModel);
}
[HttpPost]
public ViewResult SaveModel(ContactModel model)
{
return View(model);
}
Также здесь находится шаблон Razor, который показывает модель в пользовательском интерфейсе.
<div class="UI__Main Main__Contact">
<h1 class="UI__Main--SectionHeader">Contact the administrators of Life</h1>
@using (Html.BeginForm("SaveModel", "Contact", FormMethod.Post, new { @class="Form Form__Contact" }))
{
<div class="Form__Row">
@Html.LabelFor(model => model.Name, new { @class="Form__Label" })
@Html.TextBoxFor(model => model.Name, new { @class="Form__TextType Form__TextInput" })
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="Form__Row">
@Html.LabelFor(model => model.Email, new { @class = "Form__Label" })
@Html.TextBoxFor(model => model.Email, new { @class = "Form__TextType Form__TextInput" })
</div>
<div class="Form__Row">
@Html.LabelFor(model => model.Message, new { @class="Form__Label" })
@Html.TextArea("Message", new { @class = "Form__TextType Form__TextArea" })
</div>
<div class="Form__Row Submit__Row">
<input id="Submit__Button" type="submit" value="Send" />
</div>
}
Когда пользователь отправляет форму, форму придется пойти SaveModel
действия в ContactController
, но атрибут действия <form>
пустой action=""
поэтому я не думаю, что это даже будет Save Model
. Кроме того, сообщения проверки не отображаются. Я попробовал @Html.ValidationMessageFor
, но это отображает только текст, даже если я не отправлю форму.
Я даже не знаю, в чем проблема, не говоря уже об этом.
Если у кого есть предложения, учебные пособия, статьи или что-то в этом роде о создании формы в asp.net mvc 4 и бритве, пожалуйста, дайте мне это.
Я читал это article, но это не решает мою проблему. Я также нашел this Stack question и this Stack question, но, как я уже сказал, я новичок, и я действительно не понимаю проблем в этих вопросах.
EDIT:
Вот маршруты приложения ...
routes.MapRoute(
name: null,
url: "",
defaults: new { controller = "Home", action="Index" }
);
routes.MapRoute(
name: null,
url: "contact",
defaults: new { controller = "Contact", action = "Contact" }
);
Вы внесли какие-либо дополнительные маршруты, помимо стандартного? – Tobias
Я сделал редактирование. ContactController/ContactAction вызывается со статическим маршрутом, но, по моему мнению, проверка модели должна перейти к другому действию, которое является действием SaveModel в ContactController. –