每当从下拉列表中选择一个值时,空值始终从AJAX发送到控制器类

时间:2018-05-04 18:32:21

标签: javascript jquery asp.net json ajax

每当用户从下拉列表中选择一个值时,我想从数据库中获取数据。出于这些目的,我编写了一个代码块,每当用户从下拉列表中选择一个值并通过ajax将该值传递给控制器​​时,就会调用JavaScript函数。下面是代码的快照。

CSHTML

@Html.DropDownList("Code", null, htmlAttributes: new { @class = "form-control", @onchange = "fetchData(this.value)" }) 

JS

<script>
    function fetchData(Code) {

        $.ajax({
            url: '@(Url.Action("fetchCode", "ChargesSetup"))',
            type: "POST",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "{'Code':'" + Code + "'}",
            contentType: false,
            processData: false,
            success: function (result) {
                console.log(result);
            },
            error: function (result) {
                console.log("E");
            }
        });
    }
</script>
  

注意:我已尝试将格式传递给控制器​​,即值   JavaScript中的代码正确为'A'。但在控制器类中   显示为@p__linq__0。当我硬编码控制器的代码值   工作得很好。

控制器

[HttpPost]
public JsonResult fetchData(string Code)
{
      IQueryable chargestable = from p in db.chargestable where (p.Code == Code) select p;
      return Json(chargestable , JsonRequestBehavior.AllowGet);
}

在JavaScript中,下拉值与我们想要的完全相同:

Value of drop down in JS

但是在AJAX调用之后,在控制器中,下拉的值会改为某些内容,例如@p__linq__0

{SELECT 
[Extent1].[area] AS [area]
FROM [dbo].[chargestable] AS [Extent1]
WHERE [Extent1].[Code] = @p__linq__0}

我的代码有什么问题?我如何解决这个问题,因为只要选择了下拉值,我就需要获得chargestable的缓冲区。

通过更改return语句没有效果,因为未设置参数的值,它始终为null。

return Json(chargestable.ToList(), JsonRequestBehavior.AllowGet);

Value of Parameter

0 个答案:

没有答案