打开或关闭jQueryUi对话框时触发MVC中的控制器操作

时间:2015-07-04 11:06:08

标签: javascript jquery asp.net-mvc jquery-ui

我的模型看起来像:

class Store
{
    ...
    virtual ICollection<StoreItem> items;
    ...
}

商店视图显示商店属性以及包含商品和StoreItem属性的表格。 我希望在单击一个Item时,显示一个jQuery UI对话框来编辑Item模型。为此,我为StoreItem创建了Views动作,并在Dialog中嵌入了一个部分框架。

类似的东西:

<div id="modaldlg" title="Edit item?">
    @using (Ajax.BeginForm(
    new AjaxOptions
    {
        HttpMethod = "get",
        InsertionMode = InsertionMode.Replace,
    }))
    {
        @Html.Action("Edit", "StoreItem")
    }
</div>

我的问题:

  1. 加载父页面时会触发StoreItem控制器操作。我希望它在显示对话框时触发,因为它取决于被点击的项目。
  2. 当我关闭jQuery对话框时,我想触发一个帖子 - &gt; StoreItem的控制器操作。我该怎么做?

1 个答案:

答案 0 :(得分:1)

虽然我无法更准确地解决方案因为我不确定父视图是如何构建的,但我在我的项目中做了类似的事情。我是这样做的:

$('.itemContainer').on('click', '#buttonId', function (event) {
        event.preventDefault();
        $("#PlaceholderDiv").dialog({
            autoOpen: true,
            width: 450,
            height: 450,
            resizable: false,
            title: 'Edit Item',
            modal: true,
            open: function () { //Use the open handler to load data into the dialog.
                $('#loadingAnimation').show();
                $(this).load('/Controller/Action/' + itemId, function(){$('#loadingAnimation').hide();});
            },
            close: function () {
                $.ajax({
                     type: "POST", 
                     url: $('#formId').attr('action'), 
                     data: $('#formId').serialize()})
                .done(setTimeout(function() {RefreshPartial()}, (delayInms)));
            },
            buttons: {
                Close: function () {
                    $(this).dialog("close");
                }
            }
        });
        return false;
    });
相关问题