使用 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 click
getClientMap(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>可以通过表条目而不是编码更改轻松添加/删除。
任何关于如何使这项工作(或替代方式)的建议表示赞赏。
慕后森
相关分类