没有从Ajax调用ASP.Net MVC 3动作

时间:2012-07-10 14:18:46

标签: asp.net-mvc-3 jquery asp.net-ajax

我正在开发一个ASP.Net MVC 3 Web应用程序。我的一个Razor Views包含一些Textbox和一个下拉列表。当用户从下拉列表中选择一个选项时,执行以下JQuery代码

查看

<select id="myDDL">
    <option></option>
    <option value="1">F1</option>
    <option value="2">F2</option>
    <option value="3">ST1</option>
    <option value="4">ST2</option>
</select>

<div id="someDivToLoadContentTo">

</div>

JQuery

$(document).ready(function () {

$("#myDDL").change(ChangeEventOfDDL);

function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
       url: '@Url.Action("SomePartialView","testAjax")',
       data: {
           id: dropDownValue
       },
       success: function(data) {
             $('#someDivToLoadContentTo').html(data);
       }
    });
}

});

控制器

public class testAjaxController : Controller
{

    public ActionResult SomePartialView(int id)
    {
        var test = "Hello World";

        return View(test);
    }
}

但是,当我在 testAjax 控制器中的 SomePartialView 方法上设置断点时,它永远不会被击中。

任何人都可以建议为什么会这样吗?

非常感谢任何帮助。

感谢。

更新

我将errorData行添加到我的Ajax调用中,但是这似乎没有给我任何东西

$(document).ready(function(){

$("#myDDL").change(ChangeEventOfDDL);

function ChangeEventOfDDL(){
var dropDownValue = $('#myDDL').val();
//alert(dropDownValue);
$.ajax({ type: "GET",
       url: '@Url.Action("SomePartialView","testAjax")',
       data: {
           id: dropDownValue
       },
       success: function(data) {
             $('#someDivToLoadContentTo').html(data);
       },
       error: function (errorData) { $('#someDivToLoadContentTo').html(errorData); }
    });
}

});

3 个答案:

答案 0 :(得分:2)

如果您要向Controller发送值,则需要使用POST,而不是GET

type: "POST"

答案 1 :(得分:2)

问题在于以下一行

url: '@Url.Action("SomePartialView","testAjax")'

这创建了一个不正确的URL,因此,该动作永远不会被调用。我改为以下行,然后纠正了问题

url: '/testAjax/SomePartialView/' + dropDownValue

答案 2 :(得分:1)

我想我可能已经发现了它:

尝试更改此内容:

 data: {
       id: dropDownValue
   },

到此:

 data: {
       'id': dropDownValue
   },

目前我认为可能会混淆id与任何事情无关。