1

我正在开发一个 ASP.Net MVC 3 Web 应用程序。我的 Razor 视图之一包含一些文本框和一个下拉列表。当用户从下拉列表中选择一个选项时,将执行以下 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方法上放置断点时,它永远不会被命中。

谁能建议这是为什么?

任何帮助将不胜感激。

谢谢。

更新

我像这样在我的 Ajax 调用中添加了 errorData 行,但这似乎也没有给我任何东西

$(文档).ready(函数 () {

$("#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); }
    });
}

});
4

3 回答 3

2

如果您要向控制器发送一个值,您需要使用POST,而不是GET.

type: "POST"
于 2012-07-10T14:38:29.617 回答
2

伙计们,问题出在以下行

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

这是创建了一个不正确的 URL,因此,该操作从未被调用。我更改为以下行,然后纠正了问题

url: '/testAjax/SomePartialView/' + dropDownValue
于 2012-07-10T14:49:09.170 回答
1

我想我可能已经发现了:

尝试改变这个:

 data: {
       id: dropDownValue
   },

对此:

 data: {
       'id': dropDownValue
   },

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

于 2012-07-10T14:32:17.480 回答