使用AJAX中的表格单元格中的参数添加@ url.action

时间:2017-03-29 18:09:34

标签: javascript jquery asp.net ajax asp.net-mvc

我是新手,我想在表格单元格上添加一个动作方法。问题是表是由java脚本(AJAX)生成的。 这是代码:

$.ajax({
            url: "GetData",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            type: "POST",
            success: function (obj) {
                debugger;
                $tbl.empty();
                $tbl.append('<tr><th>ID</th><th>Name</th><th>Last Executed Date</th><th>Status</th></tr>');
                for (var i = 0; i < obj.length; i++) {
                    $tbl.append(' <tr><td> <a href="#">' + obj[i].senderId + '</a></td><td>' + obj[i].subject + '</td><td>' + obj[i].msg + '</td><td>TESTING</td></tr>');
                }
            }
        });

现在而不是<a href="#">我想在@URL.Action上添加操作方法<td>。这是我的行动方法:

<a href=@Url.Action("SingleSentShow","Home", new { msgId ='+obj[i].senderId+',receiverId='+obj[i].senderId+ })>

但它显示错误,我无法将javascript变量obj[i].senderId与c#代码@Url.Action("SingleSentShow","Home", new { msgId ='+obj[i].senderId+'...一起使用 我该如何解决这个问题,或者是否有任何其他解决方案来添加链接或onClick on Table单元格并使用它传递数据?

2 个答案:

答案 0 :(得分:2)

您不能将服务器端代码和客户端代码混合在一起。

一个选项可能是将基本操作URL放在JavaScript变量中,然后在JavaScript代码中将查询字符串参数附加到其中。像这样:

var singleSentShowURL = '@Url.Action("SingleSentShow","Home")';

这会产生类似客户端的内容:

var singleSentShowURL = '/Home/SingleSentShow';

然后在循环中,您可以使用该变量手动构建URL。像这样:

$tbl.append(' <tr><td> <a href="' + singleSentShow + "?msgId=" + obj[i].senderId + "&receiverId=" + obj[i].senderId + '">' + '... the rest of your line');

为了便于阅读,您可以将其拆分为多行:

var href = singleSentShow + "?msgId=" + obj[i].senderId + "&receiverId=" + obj[i].senderId;
$tbl.append(' <tr><td> <a href="' + href + '">' + '... the rest of your line');

答案 1 :(得分:2)

大卫是对的,但这是一种易于理解的简化方法。

   $tbl.append(' <tr><td> <a href=# class=Test data-href="' + href + '">' + '... the rest of your line');

两者都可以正常工作。

更新:根据评论。

将href的值移动到data-href并将href设置为#并添加一个新类以使脚本起作用。点击链接后,我们可以交换值。

   $(document).on('click', '.Test', function () {       
      $(this).attr('href',$(this).attr('data-href'));
   });

并添加以下脚本。

{{1}}