我有一個使用ASP.Net MVC開發的網站。現在我想根據請求(基於國家)我想改變網站的主題。ASP.net MVC主題更改幫助
例如:對於美國 - 加拿大的主題1 - 主題2
如果該請求不匹配,我想顯示的默認主題的任何(我目前的主題)。
我該如何動態實現這一點。
我需要重寫我的CSS嗎?還是有更好的方法呢?
請提前分享您的想法
謝謝:)
我有一個使用ASP.Net MVC開發的網站。現在我想根據請求(基於國家)我想改變網站的主題。ASP.net MVC主題更改幫助
例如:對於美國 - 加拿大的主題1 - 主題2
如果該請求不匹配,我想顯示的默認主題的任何(我目前的主題)。
我該如何動態實現這一點。
我需要重寫我的CSS嗎?還是有更好的方法呢?
請提前分享您的想法
謝謝:)
你應該定義爲普通樣式的全局CSS文件。假設您有某種幫助方法來訪問當前的國家,您可以有條件地加載特定於國家/地區的樣式表,或根據規則加載樣式表,例如,樣式具有相同的名稱作爲國家(下面的代碼是未經測試):
<link rel="stylesheet" type="text/css" href="css/global.css">
// conditional
@if (SiteHelper.CurrentCountry == "USA") {
<link rel="stylesheet" type="text/css" href="css/usa.css">
}
// or assume a css file exists with the country name
<link rel="stylesheet" type="text/css" href="css/@(SiteHelper.CurrentCountry).css">
我一般會建議使用不同的頁面佈局每個國家/主題,因爲它給你更多的控制權。基本上你會將上面的邏輯放到_ViewStart.cshtml中,並根據當前國家設置佈局。
不知道這是否是最好的方法,但這是我正在做的。我有一個類似的文件夾結構:
/Content
layout.css
/Content/Images
/Content/Themes/ThemeUSA
layout.css
/Content/Themes/ThemeUSA/Images
然後我用助手擴展返回正確的路徑,例如用於圖像:
<img src="@Url.Image(Model.EnhImg)" alt="@Model.EnhImgAlt" />
凡在
public static string Image(this UrlHelper helper, string fileName)
{
string sLocation = Content() + "images/" + fileName;
return helper.Content(sLocation);
}
private static string Content()
{
string sLocation = "~/content/";
string sTheme = (string)HttpContext.Current.Session["Theme"];
if (!String.IsNullOrEmpty(sTheme))
{
sLocation += "themes/" +sTheme + "/";
}
return sLocation;
}
圖片主題文件夾與默認文件夾中的名稱相同。樣式表同樣適用。
爲什麼不只是有一個通用的CSS文件,其中包含非國家特定的樣式。然後,當你檢測到國家時,讓我們說你得到英國的國家代碼,然後導入一個特定的gb.css來申請基礎CSS的頂部。 – carpii
其實我的網站佈局不會改變。如果我可以改變圖像主題可以改變。所以我可以創建圖像文件夾(如theme1,theme2)然後我可以加載這些圖像?但是是否可以動態更改css。例如:我改變了用css文件寫的圖像路徑 –