在.js文件中导入名称空间

时间:2011-01-24 22:37:45

标签: javascript .net

我正在开发一个MVC应用程序,并且页面的所有JavaScript都在他们自己的JavaScript文件中,因此页面上没有脚本标记。现在,有一个Messages类包含带有静态字符串的Errors,Information和Confirmation类。从服务器返回错误消息和信息消息,这很好。但是确认消息(例如,您希望保存(确定/取消),这是JavaScript中的确认功能)在每个JavaScript文件中都是硬编码的。我现在希望JavaScript使用来自Messages.Confirmation类的确认消息。

目前,为了解决这个问题,我在我的页面中做了类似的事情,

<%@ Import Namespace="Business.Common" %> 

.....

<script type="text/javascript">
    confirmSaveQuestion= '<%= Messages.Confirmations.CONFIRM_SAVE  %>';
</script>

和我的.js文件看起来像这样

var confirmSaveQuestion;

function ConfirmSave() {
    var result = window.confirm(confirmSaveQuestion);
    if (result)
        return true;
    else
        return false;
}

这很好。

是否可以将名称空间Business.Common导入.js文件,这样我就不必在页面中设置confirmSaveQuestion的值了?

2 个答案:

答案 0 :(得分:1)

您的.js文件是静态的,因此无法与服务器代码进行交互。我推荐两件事之一:

1)使用ASHX处理程序动态构建javascript文件 - 这将动态返回您的javascript,以便您可以使用服务器内容注入它。您可以引用.ashx文件,而不是在标记中引用.js文件。

2)将<%= %>标记放入您的母版页 - 仍显示在页面上,但至少您只需处理一次。

答案 1 :(得分:0)

由于我无法将命名空间导入我的.js文件,因此我采用了不同的解决方案。我从我的页面中删除了脚本标记,而是添加了以下代码行。我想它最终可能会做类似的事情,但它看起来有点清洁。

<% Html.Telerik().ScriptRegistrar().OnDocumentReady("confirmSaveQuestion = '" + Messages.Confirmations.CONFIRM_SAVE + "'"); %>