1

我正在使用 C# asp.net mvc。我在我的 Home 控制器中编写了一个 Ajax 函数 - > index.cshtml。

<script type="text/javascript">

    $(document).ready(function () {       

        $.ajax({
            type: 'POST',
            dataType: 'html',
            url: '@Url.Action("getAlerts","Home")',
            data: ({}),
            success: function (data) {
                $('#alertList').html(data);


            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert(xhr.status);
                alert(thrownError);
            }
        });

    }); 


  </script>

这是我在家庭控制器中的功能

public IList<tblInsurance> getAlertsIns()
        {
            var query = (from i in db.tblInsurances
                        where i.status == true && i.EndDate <= DateTime.Today.AddDays(7)
                         select i).ToList(); ;


            return query;
        }

        public string getAlerts()
        {
            string htmlval = "";


            var InsExpirList = getAlertsIns();


            if (InsExpirList != null)
            {
                foreach (var item in InsExpirList)
                {
                    htmlval += item.tblContractor.Fname + " " + item.EndDate + "<br />";
                }
            }

            return htmlval;
        }

但是有错误,它说“ The resource cannot be found。”

POST http://localhost:49368/Home/getAlerts  404 Not Found 

我的代码有什么问题?

4

1 回答 1

4

如果您希望您的控制器操作接受POSTs,则必须使用指定该事实的属性来装饰它:

[HttpPost]
public string getAlerts()
{
    // ...
}

但是,在这种情况下,请求似乎GET更合适(getAlerts毕竟调用了您的操作)。如果是这种情况,您可以省略接受的动词,或[HttpGet]改用。您还必须更改您的 AJAX 请求:

$.ajax({
    type: 'GET',
    dataType: 'html',
    url: '@Url.Action("getAlerts","Home")',
    /* ... */
});
于 2013-05-21T01:34:24.530 回答