2012-06-08 78 views
5

我在表中显示了一堆电影,我最终通过隐藏div的Javascript删除了每部电影。如何从Javascript中调用控制器方法

我现在想要从数据库中删除电影,那么从Javascript调用控制器方法的最佳方式是什么?

+4

很多方法。你可以用数据建立一个表单并发布它,你可以按照适当格式的GET链接,你可以调用一个AJAX调用......你的问题不够详细 –

+3

用AJAX提交POST或DELETE是走。像GET删除这样的破坏性行为不应该用GET来完成 – kenwarner

+0

你可以显示你的控制器方法以及你在JavaScript中如何填充要删除的电影ID吗? –

回答

4

有一个HTTPPost操作方法在movie控制器

[HttpPost] 
public ActionResult Delete(int id) 
{ 
    try 
    { 
    repo.DeleteMovie(id); 
    return "deleted" 
    } 
    catch(Exception ex) 
    { 
    //Log errror 
    } 
    return "failed"; 
} 

并在视图中删除,

<a href="#" data-movieId="34" class="movie">Delete Avengers</a> 
<a href="#" data-movieId="35" class="movie">Delete Iron Man</a> 
<script type="text/javascript"> 
$(function(){ 

    $(".movie").click(function(e){ 
    e.preventDefault(); 
    $.post("@Url.Action("Delete","Movie")", { id : $(this).data("movieId")} ,function(data){ 
     alert(data); 
    }); 
    }); 
}); 

</script> 
3

根据您的代码,因为它可以作为简单:

$.post("/controller/method" + id); 
1

试试这个:(使用jQuery阿贾克斯)

$("#DeleteButtonID").on("click", function() { 
    $.ajax(
    { 
     type: "POST", 
     page: 1, 
     rp: 6, 
     url: '@Url.Action("PopulateDataListWithHeader", "DataList")' + "?id=" + YOURID, 
     dataType: "json", 
     success: function(result) { 

     }, 
     error: function(x, e) { 

     } 
    }); 
}); 
0

试试这个,

function(){ 
    var url = '@Url.Action("SearchReoccurence", "SearchReoccurence", new { errormessage = "__msg__" })'; 
} 
相关问题