Asp.net mvc 尝试从详细信息操作中删除记录
我使用索引操作来显示网格状结构中的记录列表。我还有一个删除按钮作为列之一,允许用户删除特定的行/记录。这很有效。我在每一行中都有一个详细信息链接,允许查看单个记录 Delete有自己的HttpPost操作。细节也有自己的常规动作 问题是我现在想将这个Delete按钮代码添加到Details视图中,但我使用的是一个通知程序,Delete本身可以工作,但代码显示的是通知程序(因为Details操作中有一个record==null检查)。我想不出该怎么解决这个问题 代码如下:Asp.net mvc 尝试从详细信息操作中删除记录,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我使用索引操作来显示网格状结构中的记录列表。我还有一个删除按钮作为列之一,允许用户删除特定的行/记录。这很有效。我在每一行中都有一个详细信息链接,允许查看单个记录 Delete有自己的HttpPost操作。细节也有自己的常规动作 问题是我现在想将这个Delete按钮代码添加到Details视图中,但我使用的是一个通知程序,Delete本身可以工作,但代码显示的是通知程序(因为Details操作中有一个record==null检查)。我想不出该怎么解决这个问题 代码如下: public Actio
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,但是细节操作中的record=null检查仍然会触发
以下是“索引”视图和“详细信息”视图中的删除代码:
@{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" />
}
}
@{使用(Html.BeginForm(“删除”,“我的管理员”,
新建{area=“MyNameSpace”},
FormMethod.Post,新的{@class=“delete form”})
{
@Html.AntiForgeryTokenOrchard()
@Html.Hidden(“id”,Model.id)
@Hidden(“returnUrl”,Context.Request.ToUrlString())
}
}
也许我应该更改详细信息视图删除代码
有什么想法吗?因此您的
详细信息
操作会被触发,因为当您传递详细信息
视图中的返回URL的上下文.Request.tourstring()
时,您将在删除
操作中重定向到该操作。对于刚删除的记录,返回到Details
视图可能没有意义,因为您会遇到这样的错误
当您从Details
操作中Delete
时,直接重定向回索引如何?只需将delete表单中隐藏的returnUrl
的值更改为Url.Action(“Index”)
。鉴于当记录不存在时,您的详细信息
操作将重定向到索引
,因此在删除记录时执行此操作是有意义的。因此,您的详细信息
操作将被触发,因为当您传递上下文时,您将在删除
操作中重定向到它。Request.ToUrlString()
查看详细信息视图中的返回URL
。对于刚删除的记录,返回Details视图可能没有意义,因为您将遇到类似这样的错误。通常,在这种情况下,我会重定向回列表。@渐近错误删除操作用于两个索引(在索引中工作正常-因此在索引中,您点击“删除”按钮,它返回到索引,并显示已删除的消息,同时显示更新的列表,但不显示已删除的记录)以及行动的细节。然而,我用删除细节的动作进行了黑客攻击,所以你是对的,我犯了一个错误。对不起,我不是程序员。是否应创建特定于详细信息的新删除操作?你能提供一个答案和代码吗?或者我应该修改现有代码来解释这一点吗?当您从Details操作中删除时,直接重定向回索引怎么样?只需将delete表单中隐藏的returnUrl
的值更改为Url.Action(“Index”)
。鉴于当记录不存在时,您的详细信息操作将重定向到Index,因此在删除记录时执行此操作是有意义的。