Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 尝试从详细信息操作中删除记录_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 尝试从详细信息操作中删除记录

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

我使用索引操作来显示网格状结构中的记录列表。我还有一个删除按钮作为列之一,允许用户删除特定的行/记录。这很有效。我在每一行中都有一个详细信息链接,允许查看单个记录

Delete有自己的HttpPost操作。细节也有自己的常规动作

问题是我现在想将这个Delete按钮代码添加到Details视图中,但我使用的是一个通知程序,Delete本身可以工作,但代码显示的是通知程序(因为Details操作中有一个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,但是细节操作中的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,因此在删除记录时执行此操作是有意义的。