Я новичок в ASP.NET MVC, и я пытаюсь разработать простое приложение для реализации CRUD-операций, но операция удаления имеет странную проблему при возврате к контроллеру , потому что он возвращает нулевой объект, не позволяя выполнить операцию. Ниже я покажу код для модели, контроллера и соответствующего представления.Удалить представление возвращает нулевой объект к контроллеру
Модель:
public class Biblioteca
{
public int IdBiblioteca { get; set; }
public string Nome { get; set; }
public string Endereco { get; set; }
}
Контроллер
public class BibliotecaController : Controller
{
ADAO dao = DAOFactory.GetInstance(DAOFactory.DAOType.Biblioteca);
[HttpGet]
public ActionResult DeleteLibrary(int id)
{
return View(dao.Select(id));
}
[HttpPost]
public ActionResult DeleteLibrary(Biblioteca b)
{
dao.Delete(b);
return RedirectToAction("Index");
}
}
Посмотреть DeleteLibrary
@model BibliotecaWebApp.Models.Biblioteca
<h2>DeleteLibrary</h2>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>Biblioteca</h4>
<hr />
<dl class="dl-horizontal">
<dt>@Html.DisplayNameFor(model => model.IdBiblioteca)</dt>
<dd>@Html.DisplayFor(model => model.IdBiblioteca)</dd>
<dt>@Html.DisplayNameFor(model => model.Nome)</dt>
<dd>@Html.DisplayFor(model => model.Nome)</dd>
<dt>@Html.DisplayNameFor(model => model.Endereco)</dt>
<dd>@Html.DisplayFor(model => model.Endereco)</dd>
</dl>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
@Html.ActionLink("Back to List", "Index")
</div>
}
</div>
Как мы можем видеть во фрагменте контроллера, есть два контроллера для каждой операции: а [HttpGet ], которые извлекают данные, которые будут отображаться в окне подтверждения, до того, как они могут быть удалены [HttpP ост]. Проблема возникает в [HttpPost] DeleteLibrary, как только она получает нулевой объект Biblioteca из представления, чтобы выполнить исключение. Ниже приведены две картинки, которые лучше подарки это:
[HttpGet] DeleteLibrary работает правильно:
Но когда пользователь нажимает на кнопку Delete, на [HttpPost] методом DeleteLibrary получении нулевой объект, как показано ниже:
Мой вопрос: Почему возвращение объекта становится нуль, когда он перешел к мнению? В чем проблема?
Поскольку вы не генерируя никаких элементов управления формы для вашей модели, так что нет ничего ро назад. Но вы должны только оставлять свойство 'ID' в любом случае. –
Привет, Стивен, я не понял, какая форма это, потому что в представлении, которое я показал, есть форма, которая понимает сообщение. Что ты имел в виду? Благодарю. –
Форма возвращает только значения своих элементов управления ('input',' select' и 'textarea'). Вы не контролируете, поэтому ничего не нужно подавать (и не должно быть). Просто измените подпись метода POST на '[HttpPost] (public ActionResult DeleteLibrary (int id)' –