具有综合全球状况的警报

时间:2018-03-20 12:11:45

标签: javascript jquery asp.net-mvc razor

我是JQuery / JavaScript的新手,需要为以下案例启动:

通知(警报消息)对新用户有用,但对有经验的用户来说很烦人。所以我想让我的用户根据用户设置显示或不显示这些消息。 为了不必在每个警报周围建立相同的条件(从用户设置派生),我想写一个函数

  • 可以在我所有视图的脚本部分使用jquery调用
  • 评估条件并接受传入的文本并根据条件发送/不发送警报消息

我知道如何围绕警报建立条件,但无法使其全局可访问:

var isConfirmActiv = "@UserPrincipal.ConfirmActiv";
var myMessage ="Bla bla";
if (isConfirmActiv.toLowerCase() === "true") {
    alert(myMessage);
}

我想在视图的脚本部分使用它:

(var isConfirmActiv = "@UserPrincipal.ConfirmActiv";) ... somewhere?
myAlert("Bla bla", isConfirmActiv);

在脚本文件中:

function myAlert(myMessage, isConfirmActiv){    
    if (isConfirmActiv.toLowerCase() === "true") {
    alert(myMessage);
    }
} 

2 个答案:

答案 0 :(得分:2)

您必须在全局范围(函数外部)中定义此var:

https://www.w3schools.com/js/js_scope.asp

例如:

 var isConfirmActiv = "@UserPrincipal.ConfirmActiv";
 function myAlert(string myMessage){        
        if (isConfirmActiv.toLowerCase() === "true") {
            return alert(myMessage);
        }
    }

答案 1 :(得分:1)

您可以创建javascript文件并将其命名为Utility。例如。

将您的函数和全局变量isConfirmActiv放在该文件中,并将js文件链接到所有视图或主布局。

 var isConfirmActiv;

    function myAlert(myMessage, isConfirmActiv){    
        if (isConfirmActiv.toLowerCase() === "true") {
        alert(myMessage);
        }
    } 

- set directly the global defined isConfirmActiv value in every View in the script section (Note: don't redefine it, its already defined globally in javascript file)

    isConfirmActiv = "@UserPrincipal.ConfirmActiv";

- Now you can call the function from anywhere in your project.

    function myAlert(myMessage, isConfirmActiv){    
        if (isConfirmActiv.toLowerCase() === "true") {
            alert(myMessage);
        }
    }