看起来我们的团队维护着一个保证 clients 用户启用 JavaScript 的 Intranet,我们知道我们可以介入并开始更“彻底”地使用 jQuery。我们的系统非常大,因此即使我们在 ASP.NET MVC 应用程序中使用区域,用于添加、编辑、删除和查看区域的每个子系统的数据集的页面数量确实相当大。一个区域的子系统大约可以有二十个数据表。如果有 20 个数据表,并且您有单独的页面来添加、编辑、删除和查看它们,则意味着总共有 60 个页面。现在假设每个区域有 20 个子系统,那么单个区域将有 20 * 60 个页面,而我们的 Intranet 上大约有 15 个区域。你明白了,它是巨大的。
继续我的真正观点,我想通过使用 jQuery 功能来减少这个问题,在页面上有一个数据表,点击“删除”,它会给我一个带有确认按钮的删除对话框,然后提交表单,重定向到正确的操作并为我完成工作。现在我需要以下方面的一些指导:
- 如果我想使用 ASP.NET MVC 删除而不发回,执行此操作的过程是什么?这包括点击删除,它会关闭并检查它是否能够删除(必须以正确的方式处理 FK 关系),然后如果能够删除它并从 View 中的表中删除该行,所有这些都无需刷新页面。里>
- 如何使用 jQuery 从异步进程中调用删除操作?这样做明智吗?通常我们使用
Html.ActionLink
。我必须将其包装在表格中吗? - 编辑和更新也是如此,那么最好的方法是什么?
我正在寻找一种优雅的解决方案,并且该解决方案并不难应用于我必须执行此操作的每个页面。任何意见将不胜感激。
最佳答案
我正在开发一个项目,该项目使用链接通过 AJAX POST(无回发)触发删除操作。
$("a.deleteLink").click(function(event)
{
event.preventDefault();
if (confirm("Are you sure you want to delete this section?"))
{
//TODO Display processing indicator
var myId = /* id of element */ ;
$.post("/Section/Delete", { id: myId }, function(data)
{
if (data == "Success")
{
//handle success
//TODO Fade out element using .fadeOut()
}
else
{
//handle error
}
});
}
});
Controller 方法位于/Controllers/SectionController.cs 中。只接受 POST 以及任何更改数据库的操作。
private SectionRepository secRepo = new SectionRepository();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(long id)
{
Section sec = secRepo.GetById(id);
secRepo.Delete(sec);
secRepo.Save();
return Content("Success");
}
关于ASP.NET MVC 中的 jQuery CRUD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405810/