簡體   English   中英

使用c#命令保存js文件

[英]Saving js file with c# commands

    <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文件的頭標記。 我想從頭部刪除這個多行部分並將其放在jeditable.js文件中,該文件現在為空。 如果我復制/粘貼,則<% %>部分將不會被執行。 在PHP中,我將js文件保存為jeditable.js.php,服務器將編譯<?php ?>標簽中的代碼。 任何想法如何解決這個問題?

提前致謝,

在PHP中,我將js文件保存為jeditable.js.php,服務器將編譯標簽中的代碼。

這里要記住的一件事是,php現在被迫在每個請求上處理整個javascript文件。 這通常是一個“Bad Thing” 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'/>"  
            });
        }); 

將變量部分定義為js變量。

var foo ='<%= Url.Action(“UpdateSettings”,“Article”)%>'; 並將它放在js參考之前。 然后在js文件中使用varible。

您可以將腳本放在.aspx文件中,並在@page指令中將內容類型設置為text/javascript 您仍然可以使用代碼標記。

通過應用服務器端緩存可以輕松減輕每個請求處理整個javascript文件的成本,因此這不應該是一個問題。 這也可以在@page指令中配置。

您有幾個選項,但關鍵是如果您需要使用<%%>語法來獲取需要在ASP.NET頁面上下文中的信息。

您可以“將”實際函數移動到外部文件,並引用JS,然后添加一個小的內聯腳本塊,該塊使用兩個參數調用該函數,但這會破壞您想要的目的。

這里真正的問題是,為什么要為單個方法增加額外的HTTP請求?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM