Есть ли способ использовать контроллер и представление с другим именем, но при этом способные отображать сообщения атрибутов ошибок?

#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. Спасибо. Иногда я удивляюсь, почему я не думаю о чем-то настолько простом. Вы можете записать это ниже, и я отмечу это как ответ.