我是新手,我想在表格单元格上添加一个动作方法。问题是表是由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单元格并使用它传递数据?
答案 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}}