C# jQuery添加的ASP.NET核心MVC链接无效

C# jQuery添加的ASP.NET核心MVC链接无效,c#,jquery,asp.net,C#,Jquery,Asp.net,ASP NET核心MVC 3.1、jQuery v3.5.1、Bootstrap v4.1.3上的项目 案例-根据用户角色获取下拉列表项。从引导4下拉组件 工作原理: 通过ajax从服务器获取下拉项 添加我认为这样渲染之后,您无法设置asp-*属性 相反,只需设置链接的href属性 <script> $(document).ready(function () { $('#dropdownMenuLink').on('click', function () {

ASP NET核心MVC 3.1、jQuery v3.5.1、Bootstrap v4.1.3上的项目

案例-根据用户角色获取下拉列表项。从引导4下拉组件

工作原理:

  • 通过ajax从服务器获取下拉项
  • 添加
    我认为这样渲染之后,您无法设置asp-*属性

    相反,只需设置链接的href属性

    <script>
    
        $(document).ready(function () {
            $('#dropdownMenuLink').on('click', function () {
                GetDropDownMenu();
            });
        });
    
        function GetDropDownMenu() {
            $.ajax({
                type: "GET",
                url: "/Menu/GetProfileMenu",
                success: function (response) {
                    console.log(response);
                    var menuDiv = $(".dropdown-menu");
                    $.each(response, function (i, element) {
                        console.log(element);
                        var controllerAndAction = element.path.split('/');
                        //set href however you want
                        var aElement = $('<a>').attr({ 'href': "/" + controllerAndAction[0] + "/"+ controllerAndAction[1], 'class':"dropdown-item" });
                        aElement.text(element.text);
                        menuDiv.append(aElement);
                    });
                }
            });
        }
    
    </script>
    
    
    
    $(文档).ready(函数(){
    $('#dropdownMenuLink')。在('单击',函数(){
    GetDropDownMenu();
    });
    });
    函数GetDropDownMenu(){
    $.ajax({
    键入:“获取”,
    url:“/Menu/GetProfileMenu”,
    成功:功能(响应){
    控制台日志(响应);
    var menuDiv=$(“.dropdown menu”);
    $。每个(响应、功能(i、元素){
    控制台日志(元素);
    var controllerAndAction=element.path.split('/');
    //随意设置href
    var AEElement=$('').attr({'href':“/”+controllerAndAction[0]+“/”+controllerAndAction[1],'class':“下拉项”});
    aeelement.text(element.text);
    menuDiv.append(元素);
    });
    }
    });
    }
    
    我认为这样渲染之后,您无法设置asp-*属性

    相反,只需设置链接的href属性

    <script>
    
        $(document).ready(function () {
            $('#dropdownMenuLink').on('click', function () {
                GetDropDownMenu();
            });
        });
    
        function GetDropDownMenu() {
            $.ajax({
                type: "GET",
                url: "/Menu/GetProfileMenu",
                success: function (response) {
                    console.log(response);
                    var menuDiv = $(".dropdown-menu");
                    $.each(response, function (i, element) {
                        console.log(element);
                        var controllerAndAction = element.path.split('/');
                        //set href however you want
                        var aElement = $('<a>').attr({ 'href': "/" + controllerAndAction[0] + "/"+ controllerAndAction[1], 'class':"dropdown-item" });
                        aElement.text(element.text);
                        menuDiv.append(aElement);
                    });
                }
            });
        }
    
    </script>
    
    
    
    $(文档).ready(函数(){
    $('#dropdownMenuLink')。在('单击',函数(){
    GetDropDownMenu();
    });
    });
    函数GetDropDownMenu(){
    $.ajax({
    键入:“获取”,
    url:“/Menu/GetProfileMenu”,
    成功:功能(响应){
    控制台日志(响应);
    var menuDiv=$(“.dropdown menu”);
    $。每个(响应、功能(i、元素){
    控制台日志(元素);
    var controllerAndAction=element.path.split('/');
    //随意设置href
    var AEElement=$('').attr({'href':“/”+controllerAndAction[0]+“/”+controllerAndAction[1],'class':“下拉项”});
    aeelement.text(element.text);
    menuDiv.append(元素);
    });
    }
    });
    }
    
    似乎没有其他方法可以让它工作。谢谢你的回答@罗布斯密斯塔德来帮忙。ASP.NET核心MVC使用razor进行html呈现,这是在服务器端完成的。当javascript运行时,您已经在客户端,asp-*标记不再经过razor html呈现。似乎没有其他方法可以让它工作。谢谢你的回答@罗布斯密斯塔德来帮忙。ASP.NET核心MVC使用razor进行html呈现,这是在服务器端完成的。当javascript运行时,您已经在客户端,asp-*标记不再经过razor html呈现。
    <script>
    
        $(document).ready(function () {
            $('#dropdownMenuLink').on('click', function () {
                GetDropDownMenu();
            });
        });
    
        function GetDropDownMenu() {
            $.ajax({
                type: "GET",
                url: "/Menu/GetProfileMenu",
                success: function (response) {
                    console.log(response);
                    var menuDiv = $(".dropdown-menu");
                    $.each(response, function (i, element) {
                        console.log(element);
                        var controllerAndAction = element.path.split('/');
                        //set href however you want
                        var aElement = $('<a>').attr({ 'href': "/" + controllerAndAction[0] + "/"+ controllerAndAction[1], 'class':"dropdown-item" });
                        aElement.text(element.text);
                        menuDiv.append(aElement);
                    });
                }
            });
        }
    
    </script>