MVC3不一致Json从ActionResult返回

时间:2014-02-06 14:28:20

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

在页面上,我有两个链接

<a class="openDialog createButton" data-title="Update Type" href="/Type/Update/4150" title="Update target date"><img alt="Update Target date" src="/Content/Images/arrow_refresh_small.png"></a>
<a class="openDialog createButton" data-title="Change Type" href="/Type/Change/5427" title="Change Type"><img alt="Change Type" src="/Content/Images/arrow_refresh.png"></a>

这些绑定到以下jQuery函数...

$(document).ready(function () {
    $(".openDialog").live("click", function (e) {
        e.preventDefault();
        var title = $(this).data('title');
        $('#dialog').load(this.href, function () {
            $(this).dialog({
                title: title,
                modal: true,
                width: 600,
                resizable: false
            })
            bindForm(this);
        });
        return false;
    });

    function bindForm(dialog) {
        $('form', dialog).submit(function () {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    if (result.success) {
                        //redraw page
                        location.reload();
                    } else {
                        $('#dialog').html(result);
                        bindForm();
                    }
                }
            });
            return false;
        });
    }
});

网址指向以下操作

    [HttpPost]
    [OutputCache(Location = OutputCacheLocation.Server, Duration = 0)]
    public ActionResult Change(CorrespondenceLinkVM model)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                throw new Exception("Model state invalid");
            }
            db.UpdateCorrespondenceLink(model.CorrespondenceLink);
            return Json(new { success = true }, JsonRequestBehavior.AllowGet);
        }
        catch(Exception ex)
        {                
            ModelState.AddModelError("error", genericFunctions.GetLowestError(ex));
            return PartialView(model);
        }
    }

第一个(Change)将JSON对象返回到bindform

中的结果变量
    [HttpPost]
    [OutputCache(Location = OutputCacheLocation.Server, Duration = 0)]
    public ActionResult Update(CorrespondenceTarget model)
    {
        try
        {
            if (!ModelState.IsValid)
            {
                throw new Exception("Model state invalid");
            }
            db.ChangeCorrespondenceTargetDate(model.CorrespondenceTargetID, (DateTime)model.ActualDate);
            return Json(new { success = true }, JsonRequestBehavior.AllowGet);

        }
        catch (Exception ex)
        {
            ModelState.AddModelError("Error", genericFunctions.GetLowestError(ex));
        }
        return PartialView("Update", model);
    }

而第二个返回带有下载提示的原始JSON,或者(如果我将返回类型设置为html)直接返回页面。

什么可能导致同一页面(相同引用)中的两个函数到同一个控制器(相同的使用)导致这种不同的响应?

0 个答案:

没有答案