从JavaScript运行Controller方法

时间:2013-01-17 18:35:41

标签: asp.net-mvc jquery

这似乎很容易,但不仅仅适合我。我有以下代码在我的HomeController中从我的JavaScript文件中运行方法:

function(id) {
    alert("here");
    $.ajax({
        url: '/HomeController/MethodName',
        data: { id: id },
        success: function(data){
             alert('Sucess ' + data);      
        }
    });
}

我的方法是

public string MethodName(int id)
{
    return id.ToString() + "test ";
}

调用javascript的视图定义了以下脚本:jquery.unobtrusive-ajax.min.js,MicrosoftMvcAjax.js,MicrosoftAjax.js,validate.unobtrusive.min.js,jquery.validate.min.js

但不仅仅是工作。什么都没发生。该功能的第一个警报确实显示出来。但那之后别无其他。

3 个答案:

答案 0 :(得分:1)

指定的网址错误。虽然我的控制器名称是HomeController

,但我放url: '/HomeController/MethodName'而不是url: '/Home/MethodName',

答案 1 :(得分:1)

您应该让MVC框架的功能负责呈现URL。如果您更改路由,则可能意味着您必须绕过所有html页面并更新类似的引用。这样就可以避免上述问题。

使用

<%= Html.RenderAction("MethodName", "Home") %>

function(id) {
    alert("here");
    $.ajax({
        url: <%= Html.RenderAction("MethodName", "Home") %>,
        data: { id: id },
        success: function(data){
             alert('Sucess ' + data);      
        }
    });
}

答案 2 :(得分:0)

你犯了格式错误。此url字符串属性未正确关闭。您在data属性的末尾也缺少逗号。

function(id)
 alert("here");
 $.ajax({
   url: '/HomeController/MethodName', // last single quote was missing 
   data: { id: id }, // comma was missing
   success: function(data){
    alert('Sucess ' + data);      
  }
 });