我正在开发一个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的值了?
答案 0 :(得分:1)
您的.js文件是静态的,因此无法与服务器代码进行交互。我推荐两件事之一:
1)使用ASHX处理程序动态构建javascript文件 - 这将动态返回您的javascript,以便您可以使用服务器内容注入它。您可以引用.ashx文件,而不是在标记中引用.js文件。
2)将<%= %>
标记放入您的母版页 - 仍显示在页面上,但至少您只需处理一次。
答案 1 :(得分:0)
由于我无法将命名空间导入我的.js文件,因此我采用了不同的解决方案。我从我的页面中删除了脚本标记,而是添加了以下代码行。我想它最终可能会做类似的事情,但它看起来有点清洁。
<% Html.Telerik().ScriptRegistrar().OnDocumentReady("confirmSaveQuestion = '" + Messages.Confirmations.CONFIRM_SAVE + "'"); %>