C# 使用Razor和jQuery在ASP.NET内核中实现级联下拉

C# 使用Razor和jQuery在ASP.NET内核中实现级联下拉,c#,jquery,asp.net-mvc,razor,C#,Jquery,Asp.net Mvc,Razor,我一直在尝试从我的数据库中填充两个下拉列表。第一个是在表单加载时填充的,我想在用户选择第一个值后填充第二个 我遵循并改编了教程。但是没有运气 我的控制器 使用系统; 使用System.Collections.Generic; 使用Microsoft.AspNetCore.Mvc; 使用Microsoft.AspNetCore.Mvc.Rendering; 使用Oracle.ManagedDataAccess.Client; 使用MaterialProjectMaterials.模型; 使用Use

我一直在尝试从我的数据库中填充两个下拉列表。第一个是在表单加载时填充的,我想在用户选择第一个值后填充第二个

我遵循并改编了教程。但是没有运气

我的控制器

使用系统;
使用System.Collections.Generic;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.Rendering;
使用Oracle.ManagedDataAccess.Client;
使用MaterialProjectMaterials.模型;
使用UserProfile.Models;
使用系统数据;
使用Microsoft.AspNetCore.Http;
名称空间MaterialProject.Controllers
{
公共类材质控制器:控制器
{
private readonly OracleConnection con=新的OracleConnection(GetConString.ConString());
公开资料
{
列表品牌列表=新列表();
插入(0,新品牌{BCodeID=0,BDescr=“--Select Brand-->”);
//使用EntityFrameworkCore从数据库获取数据
con.Open();
string b_query=“选择codeID,descr FROM itemcegory,其中codeID LIKE('3%”)和LENGTH(codeID)=3,rownumUpdate 1
在调试器中,我得到以下关于javascrips的错误

Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request starting HTTP/1.1 GET http://localhost:44373/lib/jquery/jquery.js  
Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: Request finished in 3.5252ms 404 
Unhandled exception at line 4, column 9 in https://localhost:44373/Home/Login
0x800a1391 - JavaScript runtime error: '$' is undefined
至于线路

Unhandled exception at line 4, column 9 in https://localhost:44373/Home/Login
它说脚本位于~/Home/Login,但我的脚本位于~/Materials/Materials
最后,我的.js文件位于 ~\MaterialProject\wwwroot\lib\jquery
任何帮助都将不胜感激!
更新2
我解决了我的问题
我用代替,也用替换

<div class="form-group">
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-lg-4">
                    <label class="control-label">Volume</label>
                    <select class="form-control" id="vCodeID" name="vDescr" asp-for="VCodeID"
                            asp-items="@(new SelectList(string.Empty, "VCodeID", "VDescr"))"></select>
                </div>
            </div>
        </div>


=“+BCodeID+”ORDER
将给出一个SQL错误,因为它在“ORDER BY”之前需要一个空格“感谢您注意到这一点,但第二个ddl中仍然没有填充值。我不敢相信我把js脚本搞砸了,它们根本不起作用。因为当我运行项目并加载表单时,第二个ddl中的默认值将是”--从
js$(文档)中选择卷--”。准备好了吗(函数(){var items=“--Select Volume-->;”$(“VCodeID”).html(items);});
但是ddl是完全空的。先不要填充值。事实上,MVC操作有一个明显的错误,但您只关注最终目标,这表明您需要后退几步来了解情况。首先:
$.getJSON(url,{BCodeID:$(ddlsource).val(),函数(数据){console.log(数据);console.log(data.length,data[0].value,data[0].text));
-您是否获得了预期的数据?它实际上是一个
数组
(正如您的JS所预期的)还是一个
选择列表
?数据是否具有属性
.text
,或者更可能是
.text
(如选择列表所示)。如果
返回Json(新的SelectList(volumelist,“VCodeID”,“VDescr”)
,那么在js中,您至少需要使用
volume.Value
(而不是
volume.Value
)-这表明你没有看到什么会回来。再次感谢你的洞察力,我对ASP.NET Core和js非常陌生。我已经添加了你为日志发送的代码,但没有得到任何回复。我也使用了volume.Value和volume.Text,但仍然没有。我在[HttpPost]中收到了MaterialsController.cs的2条消息,1条消息public IActionResult Materials(Brands objbrand,IFormCollection formCollection)表示“删除未使用的参数'formCollection',如果它不是已发布的公共API的一部分”和2。在下面的同一个函数9行中,表示“从未使用分配给'VCodeID'的值”,我不知道这些参数是否可以帮助您理解问题。
<div class="form-group">
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-lg-4">
                    <label class="control-label">Volume</label>
                    <select class="form-control" id="vCodeID" name="vDescr" asp-for="VCodeID"
                            asp-items="@(new SelectList(string.Empty, "VCodeID", "VDescr"))"></select>
                </div>
            </div>
        </div>
<div class="form-group">
            <div class="row">
                <div class="col-xs-12 col-sm-6 col-lg-4">
                    <label asp-for="VDescr" class="control-label">Volume</label>
                    <select asp-for="VCodeID" class="form-control"
                            asp-items="@(new SelectList(string.Empty, "VCodeID", "VDescr"))"></select>
                </div>
            </div>
        </div>