我有一个列出数据库调用记录的页面。我想在每一行上都有一个“编辑”链接,它会弹出一个Jquery对话框,以便可以编辑该行。我的问题是如何将数据从选定行传递到jquery对话框以便可以编辑?
答案 0 :(得分:3)
我不确定您的具体要求(最小化请求等),但您应该考虑将编辑作为另一个控制器操作。然后,jquery对话框将简单地在该窗口中加载控制器操作(我使用thickbox执行此操作但现在使用jqModal)。
如果您不想招致额外的请求,可以使用三种替代方案:
如果您不打算使用额外的请求,我建议#2。
修改强>:
要使用“额外请求”,这就是我所做的(做了 - 我会使用thickbox,因为它更容易):
创建“编辑”操作和视图。在控制器中,设置母版页,如:
返回视图(“viewname”,“〜/ Views / Shared / Inline_page”); //(其中Inline_Page是您Site.Master的副本)
现在,当您点击链接时,thickbox会打开“窗口”并在链接中加载href,从而加载操作。
要进行调试,请右键单击该链接并“在新窗口中打开” - thickbox不喜欢错误消息或html标题。
在编辑操作完成更新后(例如,在POST之后),它应该重定向回到您的列表(这具有防止重新加载第二次提交表单的额外好处)。
要获得额外的功劳,您可以在不使用thickbox时将Inline_Page引用替换为null(我修改了thickbox以传递& tb = 1查询字符串)。在这种情况下,如果javascript不起作用,页面将正常工作。
詹姆斯
答案 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
});