【问题标题】:ASP.Net MVC 3 action not called from Ajax未从 Ajax 调用 ASP.Net MVC 3 操作
【发布时间】:2012-07-10 14:18:46
【问题描述】:

我正在开发一个 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 行,但这似乎也没有给我任何东西

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

});

【问题讨论】:

  • 如果在操作上方添加 [HttpGet] 会发生什么?
  • 您确定没有缓存结果吗?此外,根据您的浏览器,使用可用的调试工具来确定浏览器是否正在(或试图)进行外部调用。
  • 是的,如果您在 Firefox 中运行 Firebug。打开“网络”选项卡,查看当您按下更改下拉菜单时它会尝试做什么
  • @GazWinter 我添加了[HttpGet],但它仍然没有达到动作
  • 您已注释掉的警报,未注释时会触发吗?

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


【解决方案1】:

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

type: "POST"

【讨论】:

  • 哇!不敢相信我也没有发现。
【解决方案2】:

问题出在下面一行

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

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

url: '/testAjax/SomePartialView/' + dropDownValue

【讨论】:

  • 啊,所以我最后确实发现了问题:D 尽管您也应该能够按照自己的方式进行操作。我的某些页面上有这样的内容...
【解决方案3】:

我想我可能已经发现了:

尝试改变这个:

 data: {
       id: dropDownValue
   },

到这里:

 data: {
       'id': dropDownValue
   },

目前我认为 id 与任何东西都没有关系可能会让人感到困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多