在Jquery对话框中编辑数据

时间:2009-07-28 15:19:04

标签: jquery asp.net-mvc

我有一个列出数据库调用记录的页面。我想在每一行上都有一个“编辑”链接,它会弹出一个Jquery对话框,以便可以编辑该行。我的问题是如何将数据从选定行传递到jquery对话框以便可以编辑?

2 个答案:

答案 0 :(得分:3)

我不确定您的具体要求(最小化请求等),但您应该考虑将编辑作为另一个控制器操作。然后,jquery对话框将简单地在该窗口中加载控制器操作(我使用thickbox执行此操作但现在使用jqModal)。

如果您不想招致额外的请求,可以使用三种替代方案:

  1. 在链接上有一个带有一些数据的事件(可能存储在链接中或页面上的其他位置)并构建弹出窗口(创建文本字段等)。
  2. 在链接上有一个事件和一个隐藏的空表单。该事件显示表单并填充表单元素。
  3. 在链接上有一个事件,每个列表项都有一个表单。然后事件只需要显示表格。
  4. 如果您不打算使用额外的请求,我建议#2。

    修改

    要使用“额外请求”,这就是我所做的(做了 - 我会使用thickbox,因为它更容易):

    1. 安装thickbox(和jquery)
    2. 使用ActionLink()创建指向“编辑”操作的链接,并指定id和thickbox类。最终应该看起来像< a class =“thickbox”href =“/ Controller / Edit / 5”>
    3. 复制Site.Master模板并删除所有HTML标题内容。
    4. 创建“编辑”操作和视图。在控制器中,设置母版页,如:

      返回视图(“viewname”,“〜/ Views / Shared / Inline_page”); //(其中Inline_Page是您Site.Master的副本)

    5. 现在,当您点击链接时,thickbox会打开“窗口”并在链接中加载href,从而加载操作。

      要进行调试,请右键单击该链接并“在新窗口中打开” - thickbox不喜欢错误消息或html标题。

      1. 在编辑操作完成更新后(例如,在POST之后),它应该重定向回到您的列表(这具有防止重新加载第二次提交表单的额外好处)。

      2. 要获得额外的功劳,您可以在不使用thickbox时将Inline_Page引用替换为null(我修改了thickbox以传递& tb = 1查询字符串)。在这种情况下,如果javascript不起作用,页面将正常工作。

      3. 詹姆斯

答案 1 :(得分:2)

正如詹姆斯所说,有很多选择。例如,您可以在“编辑”链接()中嵌入记录的ID:

<a class="edit" href="/edit" rel="23456">Edit</a>

然后你可以在JS中找到类似的东西:

$('a.edit').click(function(e){
    e.preventDefault();
    var id = $(this).attr('rel');
    // 1. show the dialog and get new value(s) from user
    // 2. save new info by calling the backend with $.ajax, 
    //    passing in ID and new values
});