问候。从视图中删除操作页面
为了让我的头绕过MVC,我刚刚实现了一个简单的添加/删除页面,它也查看记录。这使得用户可以更轻松地从一个页面执行大部分操作,而无需离开以执行简单的任务。该页面可让您添加记录(具有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的
所以返回我以前的观点在。那么问题是,一旦我删除记录我的实际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是错误的。我在这里做错了什么?
FIXED
public RedirectToRouteResult DeleteBusiness(string businessToDelete)
{
try
{
if (!ModelState.IsValid)
return RedirectToAction("Businesses");
_contractsControlRepository.DeleteBusiness(businessToDelete);
return RedirectToAction("Businesses");
}
catch
{
return RedirectToAction("Businesses");
}
}
宾果。我会更新我的问题以显示修复程序。 – Kezzer 2009-07-30 10:43:36