Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Jquery Ui_Redirect_Linq To Sql - Fatal编程技术网

Asp.net mvc 确认后删除,成功后重定向

Asp.net mvc 确认后删除,成功后重定向,asp.net-mvc,jquery-ui,redirect,linq-to-sql,Asp.net Mvc,Jquery Ui,Redirect,Linq To Sql,以下是我想要的行为: 用户从索引视图中选择一条记录,该索引视图将重定向到该记录的详细视图 用户单击链接以删除当前显示的记录 模式对话框要求确认删除 用户按下确认按钮 执行关联的控制器操作方法,该方法应删除记录 用户将返回到索引视图,其中不再显示已删除的记录 我使用ASP.NETMVC1.0作为主要框架,jQueryUI中的对话框组件,以及LINQtoSQL来处理数据库交互。第1步到第4步执行得很好。但是,第五步检索记录,但不删除它。执行第六步,但记录仍显示在列表中 以下是删除链接的代码: <

以下是我想要的行为:

  • 用户从索引视图中选择一条记录,该索引视图将重定向到该记录的详细视图
  • 用户单击链接以删除当前显示的记录
  • 模式对话框要求确认删除
  • 用户按下确认按钮
  • 执行关联的控制器操作方法,该方法应删除记录
  • 用户将返回到索引视图,其中不再显示已删除的记录
  • 我使用ASP.NETMVC1.0作为主要框架,jQueryUI中的对话框组件,以及LINQtoSQL来处理数据库交互。第1步到第4步执行得很好。但是,第五步检索记录,但不删除它。执行第六步,但记录仍显示在列表中

    以下是删除链接的代码:

    <% if (Model.CanDelete())
       { %>
        <%= Html.ActionLink("Delete", "Delete", new { id = Model.Package_ID },
            new { onclick = string.Format("deletePackage({0}); return false;", Model.Package_ID) })%> |
    <% } %>
    
    最后,这里是用于删除的存储库方法:

    public void PackageDelete(PackageDeleteViewModel data)
    {
        Package package = RepositoryManager.Package().GetPackage(data.Package_ID);
    
        if (package.BrokerageOrderPackages.Count == 0
            && package.ManagementOrderPackages.Count == 0
            && package.Seeds.Count == 0)
        {
            db.Packages.DeleteOnSubmit(package);  // This branch is being executed
            db.SubmitChanges();
        }
        else
        {
            throw new RulesException("Package cannot be deleted.", "PackageDelete");
        }
    }
    

    我不认为我是在开玩笑或者太花哨了。一个值得关注的方面是:在onclick方法的Confirm按钮处理程序中,第一个版本将成功删除记录,但不会重定向到Index视图。对于当前版本,删除会以静默方式失败,但会发生重定向。Firefox/Firebug报告,在这两种情况下,索引GET都为200。Firefox和IE中的行为类似。

    $。post是一个异步ajax请求,如果重新加载页面,调用将被取消。应在其回调函数参数上重新加载页面:

    $.post('/Spectrum/Package/Delete/' + packageID, 
           null, 
           function(json){ 
                if (json.success) {
                    window.location.href = '/Spectrum/Package/Index';
                } else {
                    // jquery dialog call or
                    alert(json.errorMessage);
                }
           },
           'json');
    
    以及控制器代码:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Delete(int id)
    {
       try {
          // Validation and deletion code
       } catch exception ex {
          return Json(new {errorMessage = ex.Message, success = false});
       }
       return Json(new {success = true});
    }
    

    Neil,我正试着写一些和你类似的代码,但还没有成功。你能在createDialogContent方法中发布你的HTML和代码吗?谢谢
    $.post('/Spectrum/Package/Delete/' + packageID, 
           null, 
           function(json){ 
                if (json.success) {
                    window.location.href = '/Spectrum/Package/Index';
                } else {
                    // jquery dialog call or
                    alert(json.errorMessage);
                }
           },
           'json');
    
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Delete(int id)
    {
       try {
          // Validation and deletion code
       } catch exception ex {
          return Json(new {errorMessage = ex.Message, success = false});
       }
       return Json(new {success = true});
    }