繁体   English   中英

ASP.NET MVC应用程序中的AJAX调用未调用Action方法

[英]AJAX call in ASP.NET MVC application not calling Action method

我有以下ASP.NET MVC .cshtml文件,在其中执行以下操作:当用户在“下拉列表”框中选择一个项目时,尝试从MyObject获取Name和Id值并从其中创建一个DropDownList ,我尝试使用AJAX调用TheMethodToCall这是在一个方法TheController ,并试图显示由返回的文本结果TheMethodTocall

@model List<MyWebApp.Models.MyObject>

@if (Model.Count > 0)
{
    using (Html.BeginForm())
    {
        <div class="input-group mb-3">
            @Html.DropDownList("SelectFromDropdownList", Model.Select(i => new SelectListItem()
                {
                    Text = i.Name,
                    Value = i.Id
                }), "This is the default DropDownList option", new { @class="custom-select", @id="mydropdownid"})
            <script>
                $(function(){
                    $('#SelectFromDropdownList').change(function () {
                        var typeFeed = $(this).val();
                        // Perform AJAX call
                        $.get("@Url.Action("TheMethodToCall", "TheController")", { TypeFeed: typeFeed }, function (result){
                            @Html.DisplayText(result);
                            });
                        });
                    });
            </script>
        </div>
    }
}

我有几个问题,请帮忙! 他们来了:

  1. 我已经将Visual Studio调试器断点放在TheMethodToCall方法中,但是当用户从DropDownList选择一项时,它不会被命中。
  2. 这是显示从TheMethodToCall返回的result文本的正确方法吗?

更新资料

到目前为止,我很感谢您的回答,但是我在此方法中设置了一个断点,但仍未调用它。 我确实将$('#SelectFromDropdownList').change(function ()$('#mydropdownid').change(function () 。还有其他事情要做吗?

    [WebMethod()]
    public static string TheMethodToCall()
    {
        return "This is a test";
    }
  1. 您的.change侦听器使用了错误的ID。 下拉列表的ID为mydropdownid但在jQuery中,您具有$('#SelectFromDropdownList').change 将其更改为$('#mydropdownid').change

  2. 您在AJAX响应中使用结果的方式不正确。 您正在尝试使用服务器端Razor / C#(在页面最初加载时执行)来处理在页面加载很长时间之后发生的响应。 您只需要在响应函数中使用JavaScript。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM