jquery 如何在ASP.NET内核中使用下拉列表值查找数据库

7nbnzgx9  于 2022-12-29  发布在  jQuery
关注(0)|答案(2)|浏览(124)

我想搜索数据库使用下拉列表选定的值作为我的搜索关键字使用JsonResult在实体框架核心时,选择下拉列表项,而不是在输入框中显示正确的搜索结果,但显示[object Object]。我需要帮助纠正我的代码犯了一些错误。请参阅我的视图,JsonResult和Jquery。
在某些情况下,我的表名为Student,有三列
识别号
学生姓名
金额
下拉列表显示StudentName,当选择学生姓名时,需要显示输入框中已经选择的学生的金额,但我尝试在输入框中显示[object Object]时发生错误。
视图

<div class="form-group col-md-4">
      <label asp-for="Id" class="control-label"></label>
      <select id="studentname" asp-for="Id" asp-items="Model.Students" class="form-control">
        <option value="">--Please Select--</option>
      </select>
      <span asp-validation-for="Id" class="text-danger"></span>
  </div>
<div class="form-group col-md-4">
     <label asp-for="StudentAmt" class="control-label"></label>
     <input id="amount" asp-for="StudentAmt" class="form-control" />
     <span asp-validation-for="StudentAmt" class="text-danger"></span>
</div>

Json结果

[HttpPost]
public JsonResult StudentAmt(int id)
 {
   var query = _context.Student.Where(p => p.ID == id)
              .Select(p => new
               {
                 p.Amount,
              });

        return Json(query);
 }

JQuery语言

<script>
$(function () {

 $("#studentname").change(function () {
    var struId = $(this).find("option:selected").val();
     if (struId != "") {
      $.ajax({
      type: "POST",
      url: "/Biodata/StudentAmt?id=" + struId,
      contentType: "application/json; charset=utf-8",
      success: function (response) {
      if (response != "") {
         $('#amount).val(response);
          } else {
          $('#amount).val('');
          }
         }
     });
        } else {
                $('#amount).val('');
            }
        });
    });
</script>
ql3eal8s

ql3eal8s1#

更改后端代码,例如:

[HttpPost]
        public JsonResult StudentAmt(int id)
        {
            var query = _dbcontext.students.Where(p => p.Id == id).FirstOrDefault();
                       

            return Json(query);
        }

然后在 AJAX 中:

if (response != "") {
     $('#amount').val(response.amount);
 }

演示:

顺便说一句:在我看来,你不需要选择一个项目,并发送id到后端,然后得到值,并返回到前端。当你设置下拉列表,你可以设置studentName为文本和金额为值,当选择一个项目,你可以直接填写下拉列表的值到输入框中的Javascript。

mwyxok5s

mwyxok5s2#

您从 AJAX 调用中正确地返回了对象[object Object]。尝试使用如下属性更改返回对象的代码:

if (response != "") {
    console.log(response);
    $('#amount').val(response.amount);
}

注意,我向response对象添加了amount属性。

相关问题