Приветствия.Удалить действие с View Page
Попытка обернуть мою голову вокруг MVC. Я только что внедрил простую страницу добавления/удаления, которая также просматривает записи. Это облегчает пользователям работу с большинством вещей с одной страницы, вместо того, чтобы перемещаться в сторону простых задач. Страница позволяет добавить запись (бизнес с идентификатором и именем), который отлично работает. Однако, когда я удалить запись я сделал следующее, чтобы позволить произойти делеции:
<%= Html.ActionLink("delete", "DeleteBusiness", new { businessToDelete = B.BusinessID }) %>
Это прекрасно работает, чтобы удалить запись. Это то, что мои действия контроллера выглядит для него:
public ActionResult DeleteBusiness(string businessToDelete)
{
try
{
if (!ModelState.IsValid)
return View("Businesses", _contractsControlRepository.ListBusinesses());
_contractsControlRepository.DeleteBusiness(businessToDelete);
return View("Businesses", _contractsControlRepository.ListBusinesses());
}
catch
{
return View("Businesses", _contractsControlRepository.ListBusinesses());
}
}
Так со страницы Компаний У меня есть ActionLink, который только направляет меня к этому действию в контроллере, который выполняет работу, а затем возвращает вид, что я был ранее в. Тогда проблема заключается в том, что когда я удалил запись мой фактический URL заканчивается так:
http://localhost:3340/Accounts/ContractsControl/DeleteBusiness?businessToDelete=TEST
Это не хорошо, потому что, когда я затем, чтобы добавить новую запись, она не позволит меня. Мои действия контроллера, который позволяет мне добавлять записи выглядит следующим образом:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Businesses(Business business)
{
try
{
if (!ModelState.IsValid)
return View(_contractsControlRepository.ListBusinesses());
_contractsControlRepository.CreateBusiness(business);
return View(_contractsControlRepository.ListBusinesses());
}
catch
{
return View(_contractsControlRepository.ListBusinesses());
}
}
Любой post
запрос рассматривается как создание новых записей. Это верно? Вот мой взгляд просто довершение всего:
<% using (Html.BeginForm())
{ %>
<fieldset class="inline-fieldset">
<legend>Add Business</legend>
<p>
<label for="ID">ID</label>
<%= Html.TextBox("BusinessID", null, new { style = "width:50px;", @class = "uppercase", maxlength = "4" })%>
<%= Html.ValidationMessage("BusinessID", "*")%>
<label for="Business">Business</label>
<%= Html.TextBox("BusinessCol")%>
<%= Html.ValidationMessage("BusinessCol", "*")%>
<input type="submit" value="Add" />
</p>
<%= Html.ValidationSummary("Uh-oh!") %>
</fieldset>
<% } %>
<table>
<tr>
<th>ID</th>
<th>Business</th>
<th></th>
<th></th>
</tr>
<% foreach (Business B in ViewData.Model)
{ %>
<tr>
<td><%= B.BusinessID %></td>
<td><%= B.BusinessCol %></td>
<td class="edit"><%= Html.ActionLink("edit", "EditBusiness", new { id = B.BusinessID }) %></td>
<td class="delete"><%= Html.ActionLink("delete", "DeleteBusiness", new { businessToDelete = B.BusinessID }) %></td>
</tr>
<% } %>
</table>
Как вы можете увидеть в самом низу у меня есть ссылки на действия (игнорировать редактировать один). Поэтому, если я удалю запись, а затем попытаюсь добавить ее, она не будет работать, потому что (я предполагаю) неправильного URL-адреса. Что я здесь делаю неправильно?
назнач
public RedirectToRouteResult DeleteBusiness(string businessToDelete)
{
try
{
if (!ModelState.IsValid)
return RedirectToAction("Businesses");
_contractsControlRepository.DeleteBusiness(businessToDelete);
return RedirectToAction("Businesses");
}
catch
{
return RedirectToAction("Businesses");
}
}
Бинго. Я обновлю свой вопрос, чтобы показать исправление. – Kezzer