1

我已经构建了一个 jquery 对话框来显示用于输入数据的部分视图。

我已经建立了动作链接:

    @Html.ActionLink("Add New Service Provider", "PartialNewCust", "Customer", null,    new { @class = "addServiceProviderLink" })

我有控制器动作:

public ActionResult PartialNewCust()
        {
        return PartialView();
        }

和 div / jQuery 代码:

<div id="AddServiceProvDialog" title="Add Service Provider"></div>


<script type="text/javascript">
var linkObj;
$(function () {
    $(".addServiceProviderLink").button();

    $('#AddServiceProvDialog').dialog(
    {
        autoOpen: false,
        width: 400,
        resizable: false,
        modal: true,
        buttons:
        {
            "Add": function () {
                $("#addProviderForm").submit();
            },
            "Cancel": function () {
                $(this).dialog("close");
            }
        }
    });

    $(".addServiceProviderLink").click(function () {
        linkObj = $(this);
        var dialogDiv = $('#AddServiceProvDialog');
        var viewUrl = linkObj.attr('href');
        $.get(viewUrl, function (data) {
            dialogDiv.html(data);
            //validation
            var $form = $("#addProviderForm");
            // Unbind existing validation
            $form.unbind();
            $form.data("validator", null);
            // Check document for changes
            $.validator.unobtrusive.parse(document);
            // Re add validation with changes
            $form.validate($form.data("unobtrusiveValidation").options);
            //open dialog
            dialogDiv.dialog('open');
            return false;
        });

    });

});

局部视图呈现良好,但会打开一个新页面,并且不会作为模式对话框出现。

我究竟做错了什么。

附带说明:我的自动完成代码也不能由我的 jQuery 日期时间选择器工作......

$(document).ready(function() 
{
$(".date").datepicker();
}
);


$(document).ready(function () {
$("#CustByName").autocomplete(
    {
        source: function (request, response) {
            $.ajax(
            {
                url: "/Cases/FindByName", type: "GET", dataType: "json",
                data: { searchText: request.term, maxResults: 10 },
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    response($.map(data, function (item) {
                        return {
                            label: item.CustomerName,
                            value: item.CustomerName,
                            id: item.CustomerID
                        }
                    })
                    );
                }
            });
        },
        minLength: 3
    });

});
4

1 回答 1

2

我的猜测是您return false在按钮的单击处理程序中放错了语句,因此不会像您期望的那样阻止默认行为,并且只需遵循链接:

$(".addServiceProviderLink").click(function () {
    ...
    $.get(viewUrl, function (data) {
        dialogDiv.html(data);
        ...
        dialogDiv.dialog('open');

        // this return statement should be in the "click" handler,
        // not in success callback of the .get() method !
        return false;
    });

});

你的代码应该是:

$(".addServiceProviderLink").click(function () {
    ...
    $.get(viewUrl, function (data) {
        ...
    });

    // return here to prevent default click behavior
    return false;
});
于 2012-06-05T08:26:36.703 回答