如何在ASP.NET MVC中使用javascript编写动作链接?

Fra*_*ega 3 javascript c# asp.net-mvc jquery

我有一个脚本将一些行附加到表.其中一行有一个删除链接,为此我使用的是ActionLink,但是元素的id是通过js接收的,这也不起作用:

 $("#Table").last().append('<tr><td><a href=\"<%:Html.ActionLink("Delete", "DeleteElementFromSet", new {id=%>Id<%})%>">Delete</a></td><td>'+Id+'</td></tr>');
Run Code Online (Sandbox Code Playgroud)

其中Id是一个javascript变量,它从下拉列表的值中获取其值.

有没有办法像这样使用ActionLink?还是我必须手动写下路径?

Dar*_*rov 9

因为id只在客户端知道,所以你需要构造正确的url.这说不要混用C#和javascript.以下是您可以继续的方式:

首先声明一个全局变量,该变量将保存没有id部分的删除链接:

<script type="text/javascript">
    var deleteUrl = '<%: Url.Action("DeleteElementFromSet") %>';
</script>
Run Code Online (Sandbox Code Playgroud)

然后在一个单独的 JavaScript文件中:

$('#Table').last().append(
    $(document.createElement('tr'))
        .append($(document.createElement('td'))
            .append($(document.createElement('a'))
                .attr('href', deleteUrl + '/' + Id)
                .text('Delete')
            )
        )
        .append($(document.createElement('td'))
            .text(Id)
        )
);
Run Code Online (Sandbox Code Playgroud)

请注意,您应该使用Url.Action而不是Html.ActionLink因为您已经手动生成了锚点.

备注:避免使用GET动词进行删除.你可能会有不好的意外.修改服务器上的状态(如删除)时,请使用正确的动词(或至少POST).