私の頭をMVCのまわりでラップしようとすると、レコードを表示する単純な追加/削除ページが実装されました。これにより、ユーザーは単純なタスクを実行するために移動しなくても、ほとんどのことを1つのページから簡単に行うことができます。このページでは、正常に動作するレコード(IDと名前を持つビジネス)を追加できます。しかし、私がレコードを削除すると、削除を実行するために以下のことが行われました。
<%= 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のを持っていますで。私は、新しいレコードを追加するために行くとき、それはさせませんので
http://localhost:3340/Accounts/ContractsControl/DeleteBusiness?businessToDelete=TEST
これは、良いではありません。そこで問題は、私が削除した後レコードが私の実際のURLは次のように終わるということです私。私はレコードを追加することができます私のコントローラのアクションは、次のようになります
[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が間違っていると仮定しているため、動作しません。私はここで間違って何をしていますか?あなたが戻ってユーザーをリダイレクトしていないのはなぜ
FIXED
public RedirectToRouteResult DeleteBusiness(string businessToDelete)
{
try
{
if (!ModelState.IsValid)
return RedirectToAction("Businesses");
_contractsControlRepository.DeleteBusiness(businessToDelete);
return RedirectToAction("Businesses");
}
catch
{
return RedirectToAction("Businesses");
}
}
ビンゴ。修正を示すために質問を更新します。 – Kezzer