在MVC中使用javascript调用控制器方法
我试图使一个表行作为链接到我的mvc网站中的另一个视图。我不想使用自动生成的表列表提供的标准“Details”链接,而是想使用表行作为“Details”视图的链接。所以我需要让行作为链接工作。每个rom都有一个唯一的id,我需要将其传递给控制器方法。我尝试过不同的解决方案,但当我按下桌子上的一行时,什么都没有发生在MVC中使用javascript调用控制器方法,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,我试图使一个表行作为链接到我的mvc网站中的另一个视图。我不想使用自动生成的表列表提供的标准“Details”链接,而是想使用表行作为“Details”视图的链接。所以我需要让行作为链接工作。每个rom都有一个唯一的id,我需要将其传递给控制器方法。我尝试过不同的解决方案,但当我按下桌子上的一行时,什么都没有发生 <script type="text/javascript"> $(document).ready(function(){ $('#customers tr').c
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
到目前为止,这就是我所拥有的:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
Global.asax:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"CustomerDetails",
"Customer/Details/{id}",
new { controller = "Customer", action = "Details", id = "" }
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
// Use LocalDB for Entity Framework by default
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
你的代码中有一个输入错误
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
success:
//----^
有几件事:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
/
):url:“Customer/Details/”+id
,否则,您将调用一个名为Details123
的操作李>
确保在Global.asax中配置了路由,以支持id
,即Customer/Details/{id}
:
就像@undefined所说的,回调的名称是success
,而不是succes
您的Global.asax
应该具有以下内容:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
routes.MapRoute(
"CustomerDetails",
"Customer/Details/{id}",
new { controller = "Customer", action = "Details", id = ""}
);
我最近遇到了这种情况,并选择使用Ajax助手类:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
@Ajax.ActionLink("Details", "Details",
new
{
id = Model.Id
}, null)
在本例中,它假设您想要一个显示“详细信息”的链接,并且您已经在客户控制器中
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
无论哪种方式,如果您只想从链接触发控制器操作,就可以查看帮助器类,在如何传递/处理id值等方面为您提供更强大的键入功能,下面是我要做的:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
<tr data-id='@SomeRazorDataId' class="MyAction">foo</tr>
如果您使用的是jQuery 1.7+,那么应该使用on()
方法,而不是live()
方法
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
祝你好运 您尝试调用的url无效:
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
“客户/详细信息”+id
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
相反,它应该是“Customer/Details&id=“+id
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
(或)
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
使用“数据”
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>
$.ajax({
url:“客户/详细信息”,
数据:{id:id},
成功:函数(){}
}); 谢谢!1.完成!2.完成!3.什么??如何?@ChristianThoressonDahl:你的Global.asax是什么样子?@ChristianThoressonDahl:请检查我的更新并添加新路线。在Global.asax中用新路线更新了我的帖子。仍然不起作用。我一定是做错了什么。。。在电脑前呆了几个小时后,如果这只是一件小蠢事,我也不会感到惊讶……:)@ChristianThoressonDahl:你的路线错了,它不是{controller}/{action}/{id}
,而是Customer/Details/{id}
。谢谢:)通过简单地使用window.location=“Details/”+id就能工作;伟大的现在别忘了用指针设置行的样式:.MyAction{cursor:pointer;}
。如果你需要进一步的帮助,请告诉我。
<script type="text/javascript">
$(document).ready(function(){
$('#customers tr').click(function () {
var id = $(this).attr('id');
$.ajax({
url: "Customer/Details" + id,
succes: function () { }
});
})
})
</script>