2

我一直在尝试获取通知以显示用户何时在我的控制器中调用操作。这适用于我的大多数操作,但是我使用 anAjax.ActionLink删除我的项目,因此页面没有刷新,javascript 函数没有被调用,因此通知没有显示。

在我的_Layout页面中,我有如下所示的通知系统:

<script type="text/javascript">
    //Used to display and close the system notifications
    $(document).ready(function notify() {
        $("#NotificationBox").show("slide", { direction: "down" }, 1000);
        if ($("#NotificationAutoHide").val() == "true") {
            $("#NotificationBox").delay(5000).hide("slide", { direction: "down" }, 1000);
        }
    });
</script>

<div id="NotificationDiv">
    @if (TempData["Notification"] != null)
    { 
        @Html.Hidden("NotificationAutoHide", TempData["NotificationAutoHide"])
        <div id="NotificationBox" class="@TempData["NotificationCSS"]" style="display: none">
             @TempData["Notification"]
        </div>
    }
</div>

在我的Index视图(使用布局页面)中,我在控制器Ajax ActionLink中调用了我的Delete操作,它还填充了所需的TempData属性。

@Ajax.ActionLink("Delete", "Delete", "MyController",
    new { id = item.UserID },
    new AjaxOptions {
        HttpMethod = "Delete",
        OnBegin = "JSONDeleteFile_OnBegin",
        OnComplete = "notify"
    },
    new { @class = "delete-link" })

我认为通过从选项中添加对notify函数的调用然后一切都会起作用,但不幸的是这似乎不起作用。OnCompleteActionLink

我已经看到一些示例建议TempData通过我的控制器发送回来JsonResult,但是我不确定如何将其绑定到我现有的代码中。(我的控制器已经返回一个 JsonResult 对象用于其他用途)

谁能帮我TempData从 Ajax 调用中恢复过来并执行我的通知系统?

非常感谢你花时间陪伴。

4

2 回答 2

0

由于 TempData 是服务器端代码,我认为这是不可能的。您应该通过 JsonResult 返回此信息。

例子:

公共 JsonResult 删除(int id)
{
  //做东西
  return Json(new {param1 = "你需要什么", param2 = "更多信息"}, JsonRequestBehavior.AllowGet);
}
于 2012-08-28T20:57:39.340 回答
0

确保您的notify函数是公开可见的,以便您可以从 AJAX 成功回调中调用它:

<script type="text/javascript">
    function notify() {
        $("#NotificationBox").show("slide", { direction: "down" }, 1000);
        if ($("#NotificationAutoHide").val() == "true") {
            $("#NotificationBox").delay(5000).hide("slide", { direction: "down" }, 1000);
        }
    }

    $(document).ready(notify);
</script>

您声明notify函数的方式使得无法从外部范围调用此函数:

$(document).ready(function notify() { ... });

我什至不知道这是否是有效的 javascript 语法。没见过有人用。

于 2012-08-29T07:41:46.047 回答