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步执行得很好。但是,第五步检索记录,但不删除它。执行第六步,但记录仍显示在列表中 以下是删除链接的代码: <
<% 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});
}