我瀏覽過幾篇文章,但還沒有找到實際解決此問題的答案,所以我在詢問的同時嘗試提供最相關的細節。在剃鬚刀foreach語句中調用JavaScript函數
我有一個名爲custom.js一個非常簡單的腳本文件...
function AddListItemToUnorderedList(pageCode, menuName) {
$('.child_nav').append('<li><a href="' + pageCode + '"><span>' + menuName + '</span></a></li>');
}
我已經在我的部分頁面提及該腳本。
<script type="text/javascript" src="~/Scripts/custom.js"></script>
@{
Layout = null;
}
<ul class="child_nav" style="display: none;"></ul>
@foreach (var item in ViewBag.MenuItems)
{
@Html.Raw("<script type='text/javascript'>")
@Html.Raw("AddListItemToUnorderedList('")
@item.PageCode
@Html.Raw("', '")
@item.MenuName
@Html.Raw("');")
@Html.Raw("</script>")
}
上面的代碼的作品,但它看起來很可怕,它增加了一個腳本標籤來標記在收集的MenuItems每個項目。 MenuItems集合只包含一個與我的菜單的顯示名稱和html鏈接相關的兩個字符串列表....考慮將其填充爲測試頁面的名稱和myTestPage.com的鏈接。
我看到一些快捷鍵的語法像這樣
@: AddListItemToUnorderedList(item.PageCode, item.MenuName)
然而
,我沒能得到那個工作,無論我怎麼努力。
任何明確的建議,工作,讓我做出傳遞從ViewBag這兩個屬性的JavaScript函數直接調用,我沒有創建腳本標籤和使用@ Html.Raw?
您有XSS漏洞。 – SLaks
不要這樣做。相反,將這些值放在'data- *'屬性中並從JS讀取它們。 – SLaks
我會感激上述問題的解決方案,而不是重新設計 –