MVC控制器收到404错误

时间:2017-06-30 11:59:50

标签: ajax asp.net-mvc

我有一个MVC控制器,它有几个方法。一个用于显示View,6用于jquery ajax方法。视图显示正确,这是简单的代码

 public ActionResult Queues()
        {
            return View();
        }

在该视图上有2个datatable.net网格。该网格将通过对此

的ajax调用进行填充
 [HttpGet]
        public async Task<JsonResult> QueueOne()
        {
            try
            {
                ....

                var results = await GetData(queryString, authUser.AccessToken).ConfigureAwait(false);

                var jsonObj = JsonConvert.DeserializeObject<DataTableWrapper<QueueItemForRead>>(results);

                return Json(jsonObj, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
            }
            return Json("Error occured please try again");
        }

正确填充网格。

我在页面上有其他功能可以调用页面上的另一个端点

 public async Task<JsonResult> ItemComplete(Guid QueueId, long version)
        {
            try
            {
                ...

                var results =
                    await
                        PutData(queryString, JsonConvert.SerializeObject(itemCompleted), authUser.AccessToken)
                            .ConfigureAwait(false);

                var jsonObj = JsonConvert.DeserializeObject<NewItemCommandResult>(results);

                return Json(jsonObj, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
            }
            return Json("Error occured please try again");
        }

这里是调用上述端点的JS

 $.ajax({
        url: 'http://localhost:18171/Clients/CurrentActivity/ItemComplete' + "?QueueId=" + data + "&version=" + version,
        type: 'PUT',
        //contentType: 'application/json',
        //dataType: 'json',
        success: function (result) {
            if (result.Result === 2) {
                showSuccessNotification(name +
                    " has been Delivered to table.",
                    "Food Delivered");
            }
            //else {

            //}
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            //Process error actions
            console.log(XMLHttpRequest.status + ' ' +
                XMLHttpRequest.statusText);

            $(buttonName).hide();
        },
        beforeSend: function () {
            // Code to display spinner
            $(buttonName).hide();
            $(completedAjax).show();
        },
        complete: function () {
            // Code to hide spinner.
            $(completedAjax).hide();
        }
    });

但每次运行此函数时,我都会收到404错误。

对不起,这是一个糟糕的剪切和粘贴工作,URL实际上有周围的引号。我用这种方式得到了基本的URL

 var QueueUrl = '@Url.Action("QueueOne","CurrentActivity")';

所以当它呈现实际网址时是&#39; / Clients / CurrentActivity / QueueOne&#39;

1 个答案:

答案 0 :(得分:0)

你的网址不包含&#34; &#34;或者&#39; &#39;所以它不应该被认为是字符串应该是

url: "/Clients/CurrentActivity/ItemComplete?QueueId=" + data + "&version=" + version,

不要在网址中使用您的本地域这会导致问题在生产版本中如果您忘记更改它 你也可以使用Url Helper制作有效的Url Like

  url: "@Url.Action("ItemComplete","CurrentActivity",new{area='Clients'})"+"'QueueId=' + data + "&version=" + version,