#c# #asp.net #html-helper
#c# #asp.net #html-помощник
Вопрос:
У меня есть представление, которое отображает форму поля для создания новых данных, а затем отправляет эти данные на другой контроллер с другим именем для выполнения. Проблема в том, что, имея другое имя, я не могу отображать сообщения об ошибках для поля ввода, поскольку они не взаимодействуют через одно и то же представление. Я попытался отправить объектную модель обратно в представление.
Мой контроллер и представление:
public ActionResult Create()
{
return View();
}
[HttpPost]
public ActionResult CreateBookHTMLHEPER(Book book)
{
if (book.bookTitle != "" amp;amp; book.author != null)
{
_db.Books.Add(book);
_db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return RedirectToAction("Create", book);
}
}
Мой cshtml:
@using (Html.BeginForm("CreateBookHTMLHEPER", "Book", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="border container" style="padding:30px;">
<div class="hidden">
@Html.ValidationSummary(false, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.Id)
</div>
<div class="form-group row">
<div class="col-3">
Book Title
</div>
<div class="col-6">
@if (Model != null)
{
@Html.EditorFor(model => model.bookTitle, new { @class = "form-control", @value = @Model.bookTitle })
}
else
{
@Html.EditorFor(model => model.bookTitle, new { @class = "form-control"})
}
@Html.ValidationMessageFor(model => model.bookTitle, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
<div class="col-3">
Author
</div>
<div class="col-6">
@if (Model != null)
{
@Html.EditorFor(model => model.author, new { @class = "form-control", @value = @Model.author })
}
else
{
@Html.EditorFor(model => model.author, new { @class = "form-control" })
}
@Html.ValidationMessageFor(model => model.author, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group row">
<div class="col-3 offset-3">
<button type="submit" class="btn btn-primary form-control">
Create
</button>
</div>
<div class="col-3">
<a href="/Book/" class="btn btn-success form-control">Back To List</a>
</div>
</div>
</div>
}
Комментарии:
1. Вместо
return RedirectToAction("Create", book);
того, чтобы вы должны сделатьreturn View("Create", book);
2. Спасибо. Иногда я удивляюсь, почему я не думаю о чем-то настолько простом. Вы можете записать это ниже, и я отмечу это как ответ.