ASP.NET MVC中的jQuery CRUD
-
05-07-2019 - |
题
好像我们的团队维护一个拥有客户用户的Intranet,保证启用了javascript,我们知道我们可以介入并开始更多地“彻底”使用jQuery。我们的系统非常庞大,因此即使我们在ASP.NET MVC应用程序中使用区域,每个子系统中添加,编辑,删除和查看数据集的页面数量也非常大。一个区域的子系统可以有大约二十个数据表。如果有20个数据表,并且您有单独的页面可以添加,编辑,删除和查看它们,这意味着总共有 60 页面。现在假设每个区域有20个子系统,那么单个区域将有20 * 60页,我们的Intranet上大约有15个区域。你明白了,这很重要。
继续我的真实观点,我想通过使用jQuery功能在页面上设置数据表,点击“删除”来减少这一点。它给我一个带有确认按钮的删除对话框,然后提交表单,重定向到正确的操作并为我完成工作。现在我需要在以下方面提供一些指导:
- 如果我想删除而不使用ASP.NET MVC回发,那么执行此操作的过程是什么?这包括点击删除,它关闭并检查它是否能够删除(必须以正确的方式处理FK关系),然后如果能够删除它并从视图中的表中删除行,则所有都不刷新页面。 / LI>
- 如何使用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
}
});
}
});
控制器方法只在/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");
}
其他提示
刚刚观看了一些关于一些模板的视频,你可以通过Subsonic获得ASP.NET MVC。虽然我还没有实现这个甚至尝试过,但看起来不可思议!看看这里。
我不确定这是否是一个可行的选项,但我们最近需要与您的类似,我们将主应用程序作为ASP.NET MVC应用程序发布(使用 jQgrid )然后使用动态数据为我们的管理功能提供辅助ASP.NET Web窗体应用程序。这非常有效,为我们节省了大量时间。
它看起来像 DynamicData和MVC 将在下一个版本中聚集在一起。
其他阅读......
* David Hayden
* rbqsoft
* Sharp Architecture Wiki
如果你还想把jQuery对话框扔给派对,这个里卡多·科沃的帖子做得很好