好像我们的团队维护一个拥有客户用户的Intranet,保证启用了javascript,我们知道我们可以介入并开始更多地“彻底”使用jQuery。我们的系统非常庞大,因此即使我们在ASP.NET MVC应用程序中使用区域,每个子系统中添加,编辑,删除和查看数据集的页面数量也非常大。一个区域的子系统可以有大约二十个数据表。如果有20个数据表,并且您有单独的页面可以添加,编辑,删除和查看它们,这意味着总共有 60 页面。现在假设每个区域有20个子系统,那么单个区域将有20 * 60页,我们的Intranet上大约有15个区域。你明白了,这很重要。

继续我的真实观点,我想通过使用jQuery功能在页面上设置数据表,点击“删除”来减少这一点。它给我一个带有确认按钮的删除对话框,然后提交表单,重定向到正确的操作并为我完成工作。现在我需要在以下方面提供一些指导:

  1. 如果我想删除而不使用ASP.NET MVC回发,那么执行此操作的过程是什么?这包括点击删除,它关闭并检查它是否能够删除(必须以正确的方式处理FK关系),然后如果能够删除它并从视图中的表中删除行,则所有都不刷新页面。 / LI>
  2. 如何使用jQuery从异步进程调用删除操作?这样做是明智的吗?通常我们使用 Html.ActionLink 。我是否必须将其包装成表格?
  3. 编辑和更新同样如此,最好的方法是什么?
  4. 我正在寻找一个优雅的解决方案,并且我不得不为每个页面申请这样做。任何意见都会非常感激。

有帮助吗?

解决方案

我正在开发一个项目,该项目使用链接通过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

Chad Myers有一个好文章

同时从Dino Esposito 一个

如果你还想把jQuery对话框扔给派对,这个里卡多·科沃的帖子做得很好

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top