2013-05-16 25 views
1

我工作的nopCommerce,發現腳本和CSS都包含在下面的方式,在Root_Head.cshtml文件如何在C#MVC4變動資源(JS和CSS)URL從插件

Html.AppendCssFileParts("~/Content/smoothness/jquery-ui-1.8.17.custom.css"); 
Html.AppendScriptParts("~/Scripts/public.ajaxcart.js"); 
Html.AppendScriptParts("~/Scripts/public.common.js"); 
Html.AppendScriptParts("~/Scripts/jquery-ui.min.js"); 
Html.AppendScriptParts("~/Scripts/jquery.validate.unobtrusive.min.js"); 
Html.AppendScriptParts("~/Scripts/jquery.validate.min.js"); 
Html.AppendScriptParts("~/Scripts/jquery.unobtrusive-ajax.min.js"); 
Html.AppendScriptParts("~/Scripts/jquery-1.7.1.min.js"); 

晚在同一文件中,它被嵌入在目:

@Html.NopCssFiles(this.Url, ResourceLocation.Head) 
@Html.NopScripts(this.Url, ResourceLocation.Head) 

這產生與相對URL等中定義的HTML輸出嵌入腳本/ CSS在頁眉/頁腳...

<link href="/Content/smoothness/jquery-ui-1.8.17.custom.css" rel="stylesheet" type="text/css" /> 
<script src="/Scripts/jquery-1.7.1.min.js"></script> 

我需要將URL從插件更改爲其他URL而無需修改根文件。所以在完成之後,它看起來像這樣:

<link href="http://someurl.com/Content/smoothness/jquery-ui-1.8.17.custom.css" rel="stylesheet" type="text/css" /> 
<script src="http://someurl.com/Scripts/jquery-1.7.1.min.js"></script> 

關於如何從插件擴展它的任何想法?我應該如何繼續?

回答

1

我不知道nopCommerce是如何工作的,但如果您使用MVC4,那麼你可以使用一個新的功能調用捆綁和微小

的一大好處是,這將所有的JS和CSS結合成一個文件,做微小,所以它會提高你的網站的性能

裁判:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

的BundleConfig.cs裏面,你可以做這樣的事情

 var domainUrl = "http://someurl.com"; // you can retrieve it from config file 

     bundles.Add(new StyleBundle(domainUrl + "/Content/css").Include(domainUrl + "/Content/site.css")); 


     bundles.Add(new StyleBundle(domainUrl + "/Content/themes/base/css").Include(
        domainUrl + "/Content/themes/base/jquery.ui.core.css", 
        domainUrl + "/Content/themes/base/jquery.ui.resizable.css", 
        domainUrl + "/Content/themes/base/jquery.ui.selectable.css", 
        domainUrl + "/Content/themes/base/jquery.ui.accordion.css", 
        domainUrl + "/Content/themes/base/jquery.ui.autocomplete.css", 
        domainUrl + "/Content/themes/base/jquery.ui.button.css", 
        domainUrl + "/Content/themes/base/jquery.ui.dialog.css", 
        domainUrl + "/Content/themes/base/jquery.ui.slider.css", 
        domainUrl + "/Content/themes/base/jquery.ui.tabs.css", 
        domainUrl + "/Content/themes/base/jquery.ui.datepicker.css", 
        domainUrl + "/Content/themes/base/jquery.ui.progressbar.css", 
        domainUrl + "/Content/themes/base/jquery.ui.theme.css")); 

     bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

然後在CSHTML,你可以用下面的方法

@Styles.Render("~/Content/css") 
@Scripts.Render("~/bundles/jquery") 

* 編輯*

對不起,我剛剛重新看了看回答,我可能只是這樣做

in your web.config

<configuration> 
    <appSettings> 
     <add key="resourcePath" value="http://someurl.com"/> 
    </appSettings> 
. . . 
</configuration> 

然後在您的html

var url = ConfigurationManager.AppSettings["resourcePath"]; 
Html.AppendCssFileParts(url + "/Content/smoothness/jquery-ui-1.8.17.custom.css"); 
Html.AppendScriptParts(url + "/Scripts/public.ajaxcart.js"); 
Html.AppendScriptParts(url + "/Scripts/public.common.js"); 
Html.AppendScriptParts(url + "/Scripts/jquery-ui.min.js"); 
Html.AppendScriptParts(url + "/Scripts/jquery.validate.unobtrusive.min.js"); 
Html.AppendScriptParts(url + "/Scripts/jquery.validate.min.js"); 
Html.AppendScriptParts(url + "/Scripts/jquery.unobtrusive-ajax.min.js"); 
Html.AppendScriptParts(url + "/Scripts/jquery-1.7.1.min.js"); 
+0

感謝您的回答,但我需要從我的插件更改網址,而不更改核心文件。我怎樣才能做到這一點? – Herin

+0

你的意思是你不想對Root_Head.cshtml做任何修改? – Raver0124

+0

確切的說,我不想在Root_Head.cshtml文件中做任何修改。 – Herin