用c#命令保存js文件 $(文档).ready(函数(){ $(“.naslov_vijesti”)。可编辑(“”{ 提交:“ok”, 提交数据:{字段:“标题”}, 取消:“取消”, cssclass:“可编辑”, 宽度:“99%”, 占位符:“emtpy”, 指标:“” }); });

用c#命令保存js文件 $(文档).ready(函数(){ $(“.naslov_vijesti”)。可编辑(“”{ 提交:“ok”, 提交数据:{字段:“标题”}, 取消:“取消”, cssclass:“可编辑”, 宽度:“99%”, 占位符:“emtpy”, 指标:“” }); });,c#,javascript,include,C#,Javascript,Include,这是site.master文件的头标记。我想从head中删除这个多行部分,并将其放在jeditable.js文件中,该文件现在为空。如果复制/粘贴,则不会执行部分。在PHP中,我将js文件保存为jeditable.js.PHP,服务器将编译标记中的代码。有没有办法解决这个问题? 提前感谢, Ile将变量部分定义为js变量 var foo=''; 并将其放在js引用之前。然后在js文件中使用变量。您有几个选项,但这里的关键是,如果需要使用语法获取信息,您需要在ASP.NET页面的上下文中 您“可

这是site.master文件的头标记。我想从head中删除这个多行部分,并将其放在jeditable.js文件中,该文件现在为空。如果复制/粘贴,则不会执行
部分。在PHP中,我将js文件保存为jeditable.js.PHP,服务器将编译
标记中的代码。有没有办法解决这个问题?

提前感谢,

Ile

将变量部分定义为js变量

var foo='';
并将其放在js引用之前。然后在js文件中使用变量。

您有几个选项,但这里的关键是,如果需要使用语法获取信息,您需要在ASP.NET页面的上下文中

您“可以”将实际函数移动到一个外部文件中,并引用JS,然后添加一个小的内联脚本块,该脚本块使用两个参数调用函数,但这会破坏您想要的功能

这里真正的问题是,为什么要为单个方法增加额外HTTP请求的开销

在PHP中,我将js文件保存为jeditable.js.PHP,服务器将编译标签中的代码

这里需要记住的一点是,php现在被迫在每次请求时处理整个javascript文件。这通常是一个“坏东西”TM,它会耗尽服务器资源,而这些资源可能会花在其他地方

正如Raj Kimal的回答已经提到的,我们在ASP.Net中所做的以最有效的方式处理这一问题的工作是在页面内联定义一个短脚本,该脚本除了将服务器代码的结果分配给变量外,什么都不做。在声明其他脚本之前执行此操作,然后可以直接在这些脚本中使用这些变量。这样,您就不必为外部javascript文件做任何额外的服务器工作

我将对基马尔先生的回答补充一点。通常最好将这些变量包含在对象中,以避免命名冲突。大概是这样的:

    <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>

您可以将脚本放入.aspx文件中,并在
@page
指令中将内容类型设置为
text/javascript
。您仍然可以使用代码标记


通过应用服务器端缓存,可以轻松降低处理每个请求的整个javascript文件的成本,因此这不应该是一个问题。这也可以在
@page
指令中配置。

您的项目中是否混合了WebForms和MVC?嗯。。。老实说,我不知道。我在两个月前开始使用ASP.NET MVC,在此之前我从未使用过C#这个js函数还有很多,可能有10个,所以我想把它放到外部文件“You”中“将实际函数移动到一个外部文件,并引用JS,然后添加一个使用两个参数调用函数的小型内联脚本块,”-我真的不明白您在这里说的话…我可以将实际函数移动到哪个外部文件?您可以告诉asp.net处理.JS文件,但我不建议这样做。您的意思是添加runat=”服务器“?@ile-基本上是将你的大函数移到你想要的外部,但留下一个只调用外部函数的小内联函数。不要忘记在结果中转义任何引号。这是一个很好的技巧,但这仍然会在站点中留下一些变量。master@ile-是的。但是有一个很好的理由让你这么做,这个理由也适用于php。你需要将
ServerCreated.ArticleAction
传递给这个函数中的js函数case@s_hewitt谢谢你提醒我展示“如何使用它”部分,我刚刚想到:)谢谢!这很好,但是您丢失了visual studio提供的任何语法突出显示/intellisense。没错,但是将
/
放在顶部,将
/
放在底部可以解决这一问题。不过,让它通过电线并不是一件很好的事情。。。
<head runat="server">
    <script language="javascript">
       var ServerCreated = {
          ArticleAction:'<%=Url.Action("UpdateSettings","Article") %>',
          OtherVar:'some server data'
       }
    </script>
</head>
$(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'/>"  
            });
        });