Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过jQuery和Razor功能实现动态HTML_C#_Jquery_.net_Ajax_Razor - Fatal编程技术网

C# 通过jQuery和Razor功能实现动态HTML

C# 通过jQuery和Razor功能实现动态HTML,c#,jquery,.net,ajax,razor,C#,Jquery,.net,Ajax,Razor,使用jQuery,我使用.append将一组元素动态添加到中。我循环遍历一个表,其中包含我要添加的每个的值。那部分很好用。我遇到的问题是试图将Razor功能添加到元素中 尽管生成的最终结果HTML看起来是语法正确的HTML,但Razor代码不起作用 最终结果HTML: <div id="div_1"> <label>Clients</label> <ul> @if (Model.details != null)

使用jQuery,我使用
.append将一组
元素动态添加到
中。我循环遍历一个表,其中包含我要添加的每个
的值。那部分很好用。我遇到的问题是试图将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>
    
    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);
        }
    });
    
    //通过单击按钮临时调用getClientMap
    getClientMap(函数(映射){
    $。每个(映射、函数(idx、obj){
    $('#divDetails')。追加(''+
    “+obj.detail_hdr+”+
    “
      ”+ “@if(Model.details!=null)”+ '{' + 'foreach(Model.details.OrderBy(i=>i.value))中的var-itm'+ '{' + “
    • ”+ “@itm.value”+ “
    • ”+ '}' + '}' + “
    ”+ ''); }); }); 函数getClientMap(输出){ $.ajax({ url:“./Client/ClientMap”, 键入:“获取”, 数据类型:“json”, async:false, 成功:函数(数据){ 输出(数据); } });
    我正在尝试动态地执行此操作,这样就可以通过表项轻松地添加/删除
    ,而不是编码更改


    任何关于如何实现这一点的建议(或替代方法)都将不胜感激。

    jQuery在客户机上运行,因此当您使用它生成Razor代码时,客户机无法运行该代码,因为它必须在服务器上运行

    您可以将Razor代码直接放在应该放的地方,然后根据需要使用jQuery显示/隐藏选项

    或者,更改Ajax方法
    ClientMap
    以返回部分视图而不是JSON字符串,然后使用jQuery的
    html()
    函数添加从Ajax返回的html:

    $('#divDetails').html(data);
    
    哇,我患了“看不见树木的森林”综合症。用cshtml做这个标准剃须刀很简单。谢谢@Racil。
    $('#divDetails').html(data);