我需要一种简洁、干净的方式在 asp.net mvc(+/- jquery 或 js)中实现它?
用户单击 webform A 中的元素;弹出Webform B;用户与网络表单 B 交互;在关闭 webform B 时,可能通过提交按钮,webform a 中的源元素将使用来自 webform B 的值进行更新
谢谢。
我需要一种简洁、干净的方式在 asp.net mvc(+/- jquery 或 js)中实现它?
用户单击 webform A 中的元素;弹出Webform B;用户与网络表单 B 交互;在关闭 webform B 时,可能通过提交按钮,webform a 中的源元素将使用来自 webform B 的值进行更新
谢谢。
使用 ASP.NET MVC,我可能会在页面上呈现一个 DIV,最初是隐藏的,如果内容取决于在初始页面上选择的值,则可能通过 AJAX。我会使用 jQuery UI 对话框插件来弹出对话框。该对话框可以包含提交回服务器的表单。您还可以使用对话框的 onclose 处理程序来从对话框中的输入复制值以用于页面的其余部分。如果您通过 AJAX 填充对话框,您可以让服务器生成 HTML——比如通过呈现部分视图并返回它——或者返回 json 并在浏览器中动态生成对话框。
我已经求助于使用cookies。我发现这是唯一可靠的方法。我正在为我的对话框使用 GrayBox,所以我在对话框中有一个如下所示的函数:
function selectValue(id, name) {
SetCookie("_someuniqueprefix_RetID", id);
SetCookie("_someuniqueprefix_RetValue", name);
parent.parent.GB_CURRENT.hide();
}
然后在我的调用页面中,我启动了在 GrayBox 中显示部分的对话框:
$(function() {
var selectUrl = '/_somecontroller/Select';
// attach a method to the chooseButton to go and get a list of
// contact persons to select from
$("#chooseButton").click(function() {
GB_showCenter('Select My thing', selectUrl, 500, 620, function() {
var id = GetCookie("_someuniqueprefix_RetID");
var value = GetCookie("_someuniqueprefix_RetValue");
DeleteCookie("_someuniqueprefix_RetID", "/", "");
DeleteCookie("_someuniqueprefix_RetValue", "/", "");
$("#MyID").val(id);
$("#MyName").val(value);
});
});
});
此外,您还需要从网络上获取 SetCookie 和 GetCookie 的功能
希望有帮助
您可以使用弹出窗口中的 javascript 通过 window.opener 调用开启器上的函数。因此,当用户单击提交按钮时,您的弹出窗口可以调用父页面上的函数将数据传回。
我不确定您的要求是什么,但 IMO 使用 ajax 听起来有点矫枉过正。如果您只需要一些来自弹出网络表单的表单数据传递给开启者网络表单,则无需调用服务器。