C# Jquery Post未到达MVC控制器
抱歉,如果我认为这无关紧要,我已经读了很多其他的评论,但仍然看不出有什么错。我已经做了一些教程,他们似乎工作正常,所以我真的错过了一些简单的东西 我有一个基本的“remove”链接,我想通过JQuery发回控制器,从数据库中删除一个项目,然后更新视图 我的视图/Javascript:C# Jquery Post未到达MVC控制器,c#,asp.net-mvc,jquery,asp.net-mvc-4,C#,Asp.net Mvc,Jquery,Asp.net Mvc 4,抱歉,如果我认为这无关紧要,我已经读了很多其他的评论,但仍然看不出有什么错。我已经做了一些教程,他们似乎工作正常,所以我真的错过了一些简单的东西 我有一个基本的“remove”链接,我想通过JQuery发回控制器,从数据库中删除一个项目,然后更新视图 我的视图/Javascript: <script type="text/javascript"> $(function () { $(".RemoveLink").click(function () { var
<script type="text/javascript">
$(function () {
$(".RemoveLink").click(function () {
var id = $(this).attr("data-id");
if (id != '') {
$.post("@Url.Content("~/Agent/Remove")", { "id": id }, function (data) { alert('Here i am'); });
}
});
});
任何帮助都会很好。使用@Url.Action(“删除”、“代理”)
@Url.Content(“…”)
用于定位网站的任何静态内容
下面的代码运行良好
@foreach (var item in Model.Object) {
<tr id="row-@item.ID">
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
<input type="button" class="RemoveLink" id="@item.ID" Value="Remove" />
</td>
</tr>
}
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('.RemoveLink').live("click", function () {
Remove($(this));
});
});
function Remove(_this) {
var Id= $(_this).attr('id');
$.ajax({
type: 'POST',
url: '@Url.Action("Remove", "Agent")',
data: "{id: '" + Id + "'}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
//do something here......
},
error: function () {
}
});
}
</script>
@foreach(Model.Object中的变量项){
@DisplayFor(modelItem=>item.Description)
}
$(文档).ready(函数(){
$('.RemoveLink').live(“单击”,函数(){
删除($(此));
});
});
函数删除(_this){
var Id=$(_this).attr('Id');
$.ajax({
键入:“POST”,
url:'@url.Action(“删除”、“代理”),
数据:“{id:'”+id+“}”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
成功:功能(数据){
//在这里做点什么。。。。。。
},
错误:函数(){
}
});
}
您是否使用控制台工具查看了请求/响应周期?确定这是正确的URL?我会使用@Url.Action(“删除”、“代理”)
另外,检查您的javascript控制台,确保您的javascriptI没有错误。我已经测试了您的代码,它工作正常。我在控制器操作中添加了一个断点,它被正确的值击中。请检查生成的HTML并确保数据id
具有正确的值,如果有效的int
未作为id
传递,则不会执行该操作hit@nemesv:实际上,操作名称是第一个参数,然后是控制器名称。我看到你的编辑;-)接近。。。太多的语音标记(或者太少,取决于你如何看待它)。另外,您确定这就是OP问题的原因吗?我之所以发布评论是有原因的,而Url.Content()
绝对不是用来生成操作Url的,在这种情况下,它仍然可能生成正确的Url,所以这可能无法解决问题。@BennorMcCarthy:这是我关心的问题,虽然这个答案肯定是错误的,但我目前还不能证实这一点,我刚刚测试了两种方法,它们都产生了相同的URL字符串。你做了什么?顺便说一句,操作代码已经运行良好,我已经测试过了,还不够好。操作代码已经工作了,因此您没有识别问题,因为还没有人给出有效的答案。事实上,他的代码是有效的,因为我对它进行了测试。因此,发布一个不同的方式来做同样的事情是没有帮助的,因为他的问题很可能是由于其他原因。
[HttpPost]
public ActionResult Remove(int id)
{
return Json(new { Data = "true" });
}
@foreach (var item in Model.Object) {
<tr id="row-@item.ID">
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
<input type="button" class="RemoveLink" id="@item.ID" Value="Remove" />
</td>
</tr>
}
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('.RemoveLink').live("click", function () {
Remove($(this));
});
});
function Remove(_this) {
var Id= $(_this).attr('id');
$.ajax({
type: 'POST',
url: '@Url.Action("Remove", "Agent")',
data: "{id: '" + Id + "'}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
//do something here......
},
error: function () {
}
});
}
</script>