将C#中的字符串变量传递给javascript函数,以便在警告框中使用

时间:2017-05-09 15:09:12

标签: javascript c# variables global-asax

所以我尝试做的是在调用函数时将包含我在C#中的错误消息的简单字符串变量传递给我的javascript函数。我的函数调用工作正常,但它一直输出错误的东西。这可能也很重要,我在我的Global.asax.cs文件中调用Response.Write片段,我的javascript文件在我的MVC项目的Scripts文件夹中。根据我发现的研究,这是我在评论的帮助下目前所拥有的:

function KickOutUnwantedUsers(aMesssage) {
    console.log("Inside KickOutUnwantedUsers"); //for debugging
    console.log(aMesssage);                     //for debugging

    alert(aMessage);
    window.open('', '_self').close();
}

它只是继续输出

 <%=errorMessage%>

我不确定如何修复它,因为我发现的所有内容都表示以这种方式传递变量,但我想知道是否需要将其作为实际参数传递给功能,如果是的话,怎么做。

更新:这是C#代码:

 else
            {

                string user = s.Remove(0, 4);

                string errorMessage = "THE FOLLOWING ERRORS MIGHT HAVE OCCURRED: " + user +
                    " has either been disabled or the account does not exist." +
                    " PLEASE CONTACT YOUR ADMINISTRATOR. ";

                Response.Write("<script type=\"text/javascript\" src=\"Scripts/HelpfulFunctions.js\">");
                Response.Write("</script>");
                Response.Write("<script type=\"text/javascript\">");
                Response.Write("KickOutUnwantedUsers('" + errorMessage + "');");
                Response.Write("</script>");

            }

解决
 @Igor在评论中非常有帮助,我按照他的建议做了一些事情,由于某种原因起初不起作用,但第二天我删除了我的JavaScript文件,用相同的名称重新创建它并重新输入javascript代码和有效。编码很奇怪。我一定有错字或什么的。

2 个答案:

答案 0 :(得分:0)

这是(记录严重的)HttpUtility.JavaScriptStringEncode的用途:

// the second argument "true" causes quotation marks to be inserted as well
var message = <%= HttpUtility.JavaScriptStringEncode(errorMessage, true) %>;

答案 1 :(得分:0)

首先。这样的行

var message = '<%=errorMessage%>';

仅在ASP.NET标记文件中有意义。在js文件中它没有意义,因为ASP.NET服务器端不处理javascript文件。

二。由于您将消息字符串作为参数传递,因此需要函数签名来反映:

function KickOutUnwantedUsers(aMessage) {
    alert(aMessage);
    window.open('', '_self').close();
}

和 - 请注意参数值周围的引号:

Response.Write("KickOutUnwantedUsers('" + errorMessage + "');");