2011-07-03 64 views
0

我發現了許多關於類似主題的答案,但都是指部分視圖不是通過AJAX加載的,其中的解決方案例如是。 HtmlHelpers或Head部分,但在我通過AJAX加載PartialView時不起作用。在AJAX加載的PartialView中添加CSS和JS

我想在AJAX加載的PartialView中添加CSS樣式表和JS腳本。現在我在PartialView中編寫它,它可以工作,但它不是很好的解決方案(包括體內的腳本和樣式表)。

+0

你可以加載與主頁面加載的CSS和JS文件? –

+0

如果那會很容易;)可悲的是......例如我必須添加一些jquery腳本,這些腳本只能在該PartialView中存在,因此如果我在Layout中較早添加該腳本,它將無法工作。 – mrzepa

+0

我沒有說它會很容易,本身......:D如果你用選擇器和你的jQuery在函數中封裝你的css,你可以在你的回調中調用函數,對吧? –

回答

0

我不知道早些時候在身體內使用script標籤並不是邪惡的。所以我起初並不是那麼糟糕。

我實現了在cssLink.js兩個函數,我包括頭:

/// <reference path="../jquery-1.4.4.js" /> 

function addCssLink(link) { 
    var _cssLink = '<link rel=\"stylesheet\" href=\"' + link + '\" type=\"text/css\" />'; 
    $head = $('head'); 
    $link = $('link[href=' + link + ']', $head); 
    if ($link.length == 0) { 
     $head.append(_cssLink); 
    } 
} 

function removeCssLink(link) { 
    $('head link[href=' + link + ']').remove(); 
} 

我用內PartialViews這些功能:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#sideMenu').tabs('#content', '#content > *'); 
     addCssLink('/Content/SideMenu.css'); 
    }); 
</script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     removeCssLink('/Content/SideMenu.css'); 
    }); 
</script> 

感謝您的幫助球員,我認爲信息關於驗證應該有助於我以後:)

0

如果你只有一次加載PartialView到頁面上,應該是包括在體內的腳本和CSS沒有問題。像亞當說,如果你動態地包括一個HTML表單,你只需要告訴jQuery它就可以看到ASP.Net MVC 3 client side validation with a dynamic form

但是,如果你想在頁面上多次包含相同的PartialView,並且不想加載腳本多個倍。再就是動態腳本加載器,你可以使用:

  • 您還可以從你的主要頁面只是一個,當你加載AJAX使得它僅包含一次
  • 包括檢查,以確保相同腳本不會被多次加載。