<head runat="server">
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
<link href="../../Content/css/layout.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="/Areas/CMS/Content/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="/Areas/CMS/Content/js/jquery.jeditable.js"></script>
<script type="text/javascript" src="/Areas/CMS/Content/js/jeditable.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".naslov_vijesti").editable('<%=Url.Action("UpdateSettings","Article") %>', {
submit: 'ok',
submitdata: {field: "Title"},
cancel: 'cancel',
cssclass: 'editable',
width: '99%',
placeholder: 'emtpy',
indicator: "<img src='../../Content/img/indicator.gif'/>"
});
});
</script>
</head>
这是 site.master 文件的头标签。我想从 head 中删除这个多行部分并将其放在 jeditable.js 文件中,该文件现在是空的。如果我复制/粘贴,那么 <% %>
部分不会被执行。在 PHP 中,我将 js 文件保存为 jeditable.js.php,服务器将编译 <?php ?>
中的代码。标签。任何想法如何解决这个问题?
提前致谢,
艾尔
最佳答案
In PHP I would save js file as jeditable.js.php and server would compile code that is in tag.
这里要记住的一件事是,php 现在被迫在每次请求时处理整个 javascript 文件。这通常是一件“坏事”TM,它会耗尽本可用于其他地方的服务器资源。
正如 Raj Kimal 的回答已经提到的那样,我们在 ASP.Net 中以最有效的方式处理这个问题的方法是定义一个与页面内联的简短脚本,该脚本除了将服务器代码的结果分配给变量外什么都不做。 在声明其他脚本之前执行此操作,然后您可以直接在那些脚本中使用这些变量。这样,您就不必为外部 javascript 文件做任何额外的服务器工作。
我将对 Kimal 先生的回答进行补充。通常最好将这些变量包含在一个对象中,以帮助避免命名冲突。像这样:
<head runat="server">
<script language="javascript">
var ServerCreated = {
ArticleAction:'<%=Url.Action("UpdateSettings","Article") %>',
OtherVar:'some server data'
}
</script>
</head>
那么您的 jeditable.js
文件将如下所示:
$(document).ready(function() {
$(".naslov_vijesti").editable(ServerCreated.ArticleAction, {
submit: 'ok',
submitdata: {field: "Title"},
cancel: 'cancel',
cssclass: 'editable',
width: '99%',
placeholder: 'emtpy',
indicator: "<img src='../../Content/img/indicator.gif'/>"
});
});
关于c# - 使用c#命令保存js文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526943/