完全披露
- 這個答案是複製/從另一個問題粘貼:
- 這個答案是類似於這裏其他的答案。
- 此答案使用
cshtml
頁面而不是ascx
控件。
- 此答案提供僅查看解決方案而非僅限控制器解決方案。
- 我不認爲我的答案是'更好',但我認爲它可能會更容易一些。
動態CSS在CSHTML文件
我用CSS評論/* */
註釋掉新<style>
標籤,然後我return;
閉幕風格標記之前:
/*<style type="text/css">/* */
CSS GOES HERE
@{return;}</style>
CSHTML文件中的動態JS
我使用JavaScript評論//
註釋掉新<script>
標籤,然後我return;
關閉腳本標記之前:
//<script type="text/javascript">
JAVASCRIPT GOES HERE
@{return;}</script>
MyDynamicCss.cshtml
@{
var fieldList = new List<string>();
fieldList.Add("field1");
fieldList.Add("field2");
}
/*<style type="text/css">/* */
@foreach (var field in fieldList) {<text>
input[name="@field"]
, select[name="@field"]
{
background-color: #bbb;
color: #6f6f6f;
}
</text>}
@{return;}</style>
MyDynamicJavsScript.cshtml
無控制器所需使用下面的代碼(使用查看/共享)
。我把我的動態腳本到Views/Shared/
,我可以很容易地將它們嵌入到任何現有的頁面(或_Layout.cshtml
):
<style type="text/css">@Html.Partial("MyDynamicCss")</style>
<script type="text/javascript">@Html.Partial("MyDynamicJavaScript")</script>
使用控制器(可選)
如果你願意,你可以創建一個控制器如
<link rel="stylesheet" type="text/css" href="@Url.Action("MyDynamicCss", "MyDynamicCode")">
<script type="text/javascript" src="@Url.Action("MyDynamicJavaScript", "MyDynamicCode")"></script>
這裏的控制器可能是什麼樣子
MyDynamicCodeController.cs(可選)
[HttpGet]
public ActionResult MyDynamicCss()
{
Response.ContentType = "text/css";
return View();
}
[HttpGet]
public ActionResult MyDynamicJavaScript()
{
Response.ContentType = "application/javascript";
return View();
}
注意
- 控制器版本未經測試。我只是把它從頭頂上打下來。
- 重新閱讀我的答案後,它對我來說可能就像註釋掉結束標記一樣容易,而不是使用cshtml
@{return;}
,但我沒有嘗試過。我想這是一個偏好問題。
- 關於我的整個答案,如果您發現任何語法錯誤或改進,請讓我知道。
這裏是類似的問題與更優雅的解決方案:http://stackoverflow.com/questions/16092473/dynamically-generated-javascript-css-in-asp-net-mvc –