使用 jQuery,我動態地將一組<ul>元素添加到<div>using .append。我遍歷一個包含<ul>我想要添加的每個值的表。那部分工作正常。我遇到問題的地方是嘗試向<li>元素添加 Razor 功能。盡管生成的最終結果 HTML 看起來是語法正確的 HTML,但 Razor 代碼不起作用。最終結果 HTML:<div id="div_1"> <label>Clients</label> <ul> @if (Model.details != null) { foreach (var itm in Model.details.OrderBy(i => i.value)) { <li>@itm.value</li>} } </ul></div>上面的 HTML 是我的.append代碼生成的。它可以硬編碼到我的cshtml頁面中并且完美運行。通過.append在運行時添加它不是我認為圍繞創建時間或順序?下面我的代碼的縮小版本:控制器:[HttpGet]public JsonResult ClientMap(){ var db = new EDM_Client(); List<client_map> map = new List<client_map>(); map = db.client_map.ToList(); return Json(map, JsonRequestBehavior.AllowGet);}csHTML:<div id="divDetails" class="row"></div>jQuery://getClientMap temporarily called from a button clickgetClientMap(function (map) { $.each(map, function (idx, obj) { $('#divDetails').append('<div id="div_' + obj.detail_id + '">' + '<label>' + obj.detail_hdr + '</label>' + '<ul>' + '@if (Model.details != null)' + '{' + 'foreach (var itm in Model.details.OrderBy(i => i.value))' + '{' + '<li>' + '@itm.value' + '</li>' + '}' + '}' + '</ul>' + '</div>'); });});function getClientMap(output) {$.ajax({ url: './Client/ClientMap', type: "GET", dataType: "json", async: false, success: function (data) { output(data); }});我正在嘗試動態執行此操作,因此<ul>可以通過表條目而不是編碼更改輕松添加/刪除。任何關于如何使這項工作(或替代方式)的建議表示贊賞。
1 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
jQuery 在客戶端機器上運行,因此當您使用它生成 Razor 代碼時,客戶端機器無法運行該代碼,因為它必須在服務器上運行。
您可以將 Razor 代碼直接放在應有的位置,然后根據需要使用 jQuery 顯示/隱藏選項。
或者,更改您的 Ajax 方法ClientMap
以返回部分視圖而不是 JSON 字符串,然后使用 jQuery 的html()
函數添加從 Ajax 返回的 HTML:
$('#divDetails').html(data);
- 1 回答
- 0 關注
- 239 瀏覽
添加回答
舉報
0/150
提交
取消