我使用索引操作以网格状结构显示记录列表。我还有一个删除按钮作为允许用户删除特定行/记录的列之一。这很好用。我还在每一行中都有一个详细信息链接,以允许查看单个记录。
Delete 有自己的 HttpPost 操作。细节也有自己的规律动作。
问题是我现在想将此删除按钮代码添加到详细信息视图中,但我正在使用通知程序并且删除本身有效,但代码显示了通知程序(因为在详细信息操作中有一个 record==null 检查)。我无法弄清楚如何解决这个问题。
这是代码:
public ActionResult Index()
{
...
var myList = _repository.Table;
// Nothing else relevant just displays list and sets up model
return View(model);
}
public ActionResult Details(int id)
{
...
var record = _repository.Get(id);
// If I use the Delete action below then this will get called and fire;
// I am trying to figure out how to avoid it firing when I use the Delete code
// in the Details view (see .cshtml code below)
if (record == null)
{
_myServices.Notifier.Warning
(T("Request not found, please check the URL."));
return RedirectToAction("Index");
}
var model = new myViewModel();
model.Id = record.Id;
// Pulling other records, nothing special
return View(model);
}
[HttpPost]
public ActionResult Delete(int id, string returnUrl)
{
...
var item = _repository.Get(id);
if (item == null)
{
_myServices.Notifier.Error(T("Inquiry not found."));
}
else
{
_myServices.Notifier.Information(T("Request deleted successfully."));
_repository.Delete(item);
}
return this.RedirectLocal(returnUrl, "~/");
}
我想知道是否应该创建一个单独的操作,例如 DeleteDetails,但是 Details 操作中的 record=null 检查仍然会触发。
以下是 Index 视图和 Details 视图中的删除代码:
@{using (Html.BeginForm("Delete", "MyAdmin",
new { area = "MyNameSpace" },
FormMethod.Post, new { @class = "delete-form" }))
{
@Html.AntiForgeryTokenOrchard()
@Html.Hidden("id", Model.Id)
@Html.Hidden("returnUrl", Context.Request.ToUrlString())
<input type="submit" value="Delete" />
}
}
也许我应该更改详细信息视图删除代码?
有什么想法吗?