繁体   English   中英

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

[英]Import namespace in .js file

我正在使用MVC应用程序,并且页面的所有JavaScript都在其自己的JavaScript文件中,因此页面上没有Script标记。 现在,有一个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的值?

您的.js文件是静态的,因此它们无法与服务器代码进行交互。 我建议以下两件事之一:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM