将ajax模式对话框中的值返回到主视图

时间:2012-08-10 20:10:45

标签: jquery asp.net-mvc-3 razor

我正在使用jQuery打开这样的模态对话框:

$('#AddCustomerDialog').dialog(
    {
    autoOpen: false,
    width: 400,
    resizable: false,
    modal: true,
    buttons:
    {
        "Done": function () {
        $(this).dialog('close');
        }
    }
});


$('#AddCustomerLink').click(function () {
    linkObj = $(this);
    var dialogDiv = $('#AddCustomerDialog');
    var viewUrl = "/Cases/AddCustomer";
    $.get(viewUrl, function(data) {
        dialogDiv.html(data);
        //open dialog
        dialogDiv.dialog('open');
    });
    return false;
    });
});

对话框局部视图的目的是“即时”输入新的客户记录。我想将新的客户ID返回到调用视图,但我不知道如何使用我正在使用的代码。任何建议或例子都将不胜感激。

* 编辑08/16/2012 **

我应该用控制器动作做这样的事情吗?

public JsonResult AddCustomer()
{
    var result = ...insert statement here

    ...linq select to get new customerid
    {
       CustomerID = c.CustomerID
       ...
    };
return Json(variable, JsonRequestBehavior.AllowGet); 
}

我知道这很麻烦,但基本的想法会给我我需要的东西吗?

[R

2 个答案:

答案 0 :(得分:1)

您可以使用“完成”按钮点击回调类似

if (!$("#AddCustomerDialog form").valid())
    return false;
var postUrl = $("#AddCustomerDialog form").attr('action');
$.post(postUrl, $(containerSelector + ' form').serialize(),
        function (result) {
            $("#AddCustomerDialog").dialog("close");
            var addedCustomerId = result.Id;
        });

AddCustomer操作(对于post请求)也应该以Json格式返回添加的客户。

答案 1 :(得分:0)

在你的html页面脚本中声明一个变量,现在在php代码的返回数据中添加一个带有变量名称的echo脚本,并在此处设置你想要的id

脚本中的

:var foo;

在您的PHP代码中

echo 'data for insert in div';
echo '<script>foo=id_you_want</script>';
exit();

这样你就可以在html页面中设置foo var,其中包含新客户的id并且可以使用它