为了账号安全,请及时绑定邮箱和手机立即绑定

通过带有 Razor 功能的 jQuery 动态 HTML

通过带有 Razor 功能的 jQuery 动态 HTML

C#
一只名叫tom的猫 2021-07-14 13:01:10
使用 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);


查看完整回答
反对 回复 2021-07-18
  • 1 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号