【问题标题】:Dynamically edit SQL Query based off of model value in ASP.net根据 ASP.net 中的模型值动态编辑 SQL 查询
【发布时间】:2021-09-30 20:03:57
【问题描述】:

我正在使用 ASP.net 和 SQL 查询。在 SQL 中,我有类似于这些的表,名为 Departments 和 SubDepartments

DepartmentID DepartmentName
1 Department1
2 Department2
SubDepartmentID SubDepartmentName DepartmentID
1 SubDepartment1 2
2 SubDepartment2 2
3 SubDepartment3 1

在 asp.net 中,我需要运行类似于此的查询

SELECT SubDepartmentID FROM SubDepartments WHERE DepartmentID = '2'

这会给我结果

SubDepartmentID
1
2

但是,我需要像这样动态地执行此操作

SELECT SubDepartmentID FROM SubDepartments WHERE DepartmentID = '*Dynamic Value*'

在我看来,动态值是根据模型的下拉值给出的。

我尝试过在 asp.net 中查看动态编辑 SQL 查询的不同方法,但似乎没有什么对我有用。

我的目标最终是有一个部门ddl,子部门ddl,机器ddl,设备ddl,然后是问题ddl。我最终需要一个查询来读取所有这些值并仅返回属于所选部门、子部门、机器和设备的问题。只是完成部门和子部门之间的连接应该足以弄清楚如何做到这一点。

编辑: 到目前为止我的视图代码是这样的

<script src="~/Scripts/jquery/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/jquery/bootstrap.min.js"></script>
<script type="text/jscript">
    $(function () {
    $("#Departmentddl").change(function () {
    alert($('option:selected').val());
    });
    });
</script>
<div class="form-group" id="Departmentddl">
    <label asp-for="DepartmentId" class="control-label"></label>
    <select asp-for="DepartmentId" class="form-control" asp-items="ViewBag.DepartmentId"></select>

</div>
<div class="container" id="SubDepartmentddlOther">
    <div class="form-group" id="SubDepartmentddl">
        <label asp-for="SubDepartmentId" class="control-label"></label>
        <select asp-for="SubDepartmentId" class="form-control" asp-items="ViewBag.SubDepartment"></select>
    </div>
</div>

注意:ViewBag.Department 有效,但 ViewBag.SubDepartment 没有值。

我还应该补充一点,我的控制器名为“RecordEntriesController”

再次编辑:

我现在正在使用它来尝试填写下拉列表。它正在工作,但没有使用我的变量 NumberValue 和 NameLabel。我如何使这些正确?这是我的 JSON,下面是 jscript。我在控制器中创建了 JSON,因此如果格式不正确,可以对其进行更改。

{"NumberValue":"5","NameLabel":"SubDepartment1"},{"NumberValue":"8","NameLabel":"SubDepartment2"}
<script type="text/jscript">
    $(function () {
        $("#ddlDepartments").change(function () {
            var selectedid = $('option:selected').val();
            if (selectedid > 0) {
                $.ajax({
                    url: "/RecordEntries/PopulateddlSubDepartments",
                    data: {
                        id: selectedid
                    },
                    type: "Post",
                    dataType: "json",
                    success: function (data) {
                        alert(data);
                        var ddldist = $('#ddlSubDepartments');
                            $.each(data, function (NumberValue, NameLabel) {

                                 ddldist.append(
                                     $('<option></option>').val(NumberValue).html(NameLabel)
                            );
                        });

                    },
                });
            }
        });
    });
</script>

【问题讨论】:

  • 您使用什么技术与数据库通信?是asp mvc吗?
  • @MeysamaAsadi 是的,我正在使用 MVC
  • 你的问题不清楚,是用entityframework还是ado?
  • 实体框架。抱歉,这是我的第一个项目,我什至不知道其中的一些含义。我正在使用 MVC 控制器和使用实体框架的视图。如果有区别的话,它也是 asp.net Core。
  • 你先做代码还是先做模型?

标签: c# sql asp.net sql-server asp.net-core


【解决方案1】:

把脚本改成这个:

url:"/Home/GetDropDownList" 替换为您的控制器和操作的名称

<script type="text/jscript">
  $(function() {
    $("#Departmentddl").change(function() {
      var selectedid = $('option:selected').val();
      if (selectedid > 0) {
        $.ajax({
          url: "/Home/GetDropDownList",
          data: {
            id: selectedid
          },
          type: "Post",
          dataType: "Json",
          success: function(result) {
             alert(result);
          },
          error: function() {
           
          }
        });
      } 
    });
  });
</script>

在你的控制器中

[HttpPost]
public IActionResult GetDropDownList(int id)
{
   // do work
   return Json("success", JsonRequestBehavior.AllowGet);  
}

【讨论】:

  • 无法识别 JsonRequestBehavior。我尝试添加using System.Web.Mvc,但这会给我的控制器的其余部分添加很多错误。还有其他方法可以添加参考吗?我不能为System.Web.Mvc使用正确的框架@
  • 使用 return Ok("success") 或使用 return new JsonResult("success");
  • 我知道我真的不擅长这个哈哈。无论如何,我一直在努力实现这一点,只是一直卡住。我曾尝试使用原始 sql,但后来遇到了将其转换为 JSON 的问题。我想我可能实际上不必使用 JSON 将数据传回视图。我可以只使用 ViewData 或 ViewBag,只要我可以在其中使用 where 子句,我还没有弄清楚。
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2021-12-24
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多