Asp.net core 如何在asp.net核心mvc中制作级联下拉菜单?
我以前试过,但没能成功Asp.net core 如何在asp.net核心mvc中制作级联下拉菜单?,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,我以前试过,但没能成功 有人能举个例子告诉我吗?在ASP.Net核心中应该没有什么特别之处,因为视图仍然是从基本的HTML和CSS构建的,您可以使用JS 我建议您遵循W3Schools提供的本教程中的主题: 如您所见,在本教程中,将此嵌套数组用作下拉数据: var subjectObject = { "Front-end": { "HTML": ["Links", "Images", "Tabl
有人能举个例子告诉我吗?在ASP.Net核心中应该没有什么特别之处,因为视图仍然是从基本的HTML和CSS构建的,您可以使用JS 我建议您遵循W3Schools提供的本教程中的主题: 如您所见,在本教程中,将此嵌套数组用作下拉数据:
var subjectObject = {
"Front-end": {
"HTML": ["Links", "Images", "Tables", "Lists"],
"CSS": ["Borders", "Margins", "Backgrounds", "Float"],
"JavaScript": ["Variables", "Operators", "Functions", "Conditions"]
},
"Back-end": {
"PHP": ["Variables", "Strings", "Arrays"],
"SQL": ["SELECT", "UPDATE", "DELETE"]
}
}
如果您的下拉列表数据是静态的,您可以直接将其放入JS代码中,但我建议在服务器端生成它,然后:
如果有不容易理解的地方,请随时询问澄清。在ASP.Net Core中,这应该没有什么特别之处,因为视图仍然是基于基本HTML和CSS构建的,您可以使用JS 我建议您遵循W3Schools提供的本教程中的主题: 如您所见,在本教程中,将此嵌套数组用作下拉数据:
var subjectObject = {
"Front-end": {
"HTML": ["Links", "Images", "Tables", "Lists"],
"CSS": ["Borders", "Margins", "Backgrounds", "Float"],
"JavaScript": ["Variables", "Operators", "Functions", "Conditions"]
},
"Back-end": {
"PHP": ["Variables", "Strings", "Arrays"],
"SQL": ["SELECT", "UPDATE", "DELETE"]
}
}
如果您的下拉列表数据是静态的,您可以直接将其放入JS代码中,但我建议在服务器端生成它,然后:
如果有不容易理解的地方,请随时询问澄清。您可以参考以下步骤在asp.net core MVC中创建级联下拉列表
public class HomeController : Controller
{
private readonly ApplicationDbContext _context; //db context.
private readonly IRepository _repository;
public HomeController( ApplicationDbContext context, IRepository repository)
{
_context = context;
_repository = repository;
}
public IActionResult CreateIndex() {
//get the categories.
ViewBag.CategoryId = _repository.GetCategories().Select(c => new SelectListItem { Value= c.Id.ToString(),Text = c.CategoryName }).ToList();
return View();
}
//get Subcategory based on the category id
public IActionResult GetSubCategory(int cid)
{
var SubCategory_List = _repository.GetCategories().Where(s => s.Id == cid).FirstOrDefault().SubCategories.Select(c => new { Id = c.Id, Name = c.SubCategoryName }).ToList();
return Json(SubCategory_List);
}
[HttpPost]
public IActionResult CreateIndex(ProductViewModel product)
{
return View();
}
@model MVCDemo.Models.ProductViewModel
@{
ViewData["Title"] = "CreateIndex";
}
<div class="row">
<div class="col-md-4">
<form asp-action="CreateIndex">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CategoryTypeId" class="control-label">Category Type</label>
<select asp-for="CategoryTypeId" asp-items="ViewBag.CategoryId" class="form-control">
<option value="">Select Category</option>
</select>
</div>
<div class="form-group">
<label asp-for="SubCategoryTypeId" class="control-label">SubCategory Type</label>
<select asp-for="SubCategoryTypeId" class="form-control"></select>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
@section Scripts{
<script>
$(function () {
$("select#CategoryTypeId").change(function () {
var cid = $(this).val();
$("select#SubCategoryTypeId").empty();
$.getJSON(`/Home/GetSubCategory?cid=${cid}`, function (data) {
//console.log(data);
$.each(data, function (i, item) {
$("select#SubCategoryTypeId").append(`<option value="${item.id}">${item.name}</option>`);
});
});
})
});
</script>
}
@model MVCDemo.Models.ProductViewModel
@{
ViewData[“Title”]=“CreateIndex”;
}
类别类型
选择类别
子类别类型
@节脚本{
$(函数(){
$(“选择#CategoryTypeId”).change(函数(){
var cid=$(this.val();
$(“选择#子类别类型ID”).empty();
$.getJSON(`/Home/GetSubCategory?cid=${cid}`,函数(数据){
//控制台日志(数据);
$。每个(数据、功能(i、项){
$(“选择#子类别类型ID”).append(`${item.name}`);
});
});
})
});
}
您可以参考以下步骤在asp.net核心MVC中创建级联下拉列表
public class HomeController : Controller
{
private readonly ApplicationDbContext _context; //db context.
private readonly IRepository _repository;
public HomeController( ApplicationDbContext context, IRepository repository)
{
_context = context;
_repository = repository;
}
public IActionResult CreateIndex() {
//get the categories.
ViewBag.CategoryId = _repository.GetCategories().Select(c => new SelectListItem { Value= c.Id.ToString(),Text = c.CategoryName }).ToList();
return View();
}
//get Subcategory based on the category id
public IActionResult GetSubCategory(int cid)
{
var SubCategory_List = _repository.GetCategories().Where(s => s.Id == cid).FirstOrDefault().SubCategories.Select(c => new { Id = c.Id, Name = c.SubCategoryName }).ToList();
return Json(SubCategory_List);
}
[HttpPost]
public IActionResult CreateIndex(ProductViewModel product)
{
return View();
}
@model MVCDemo.Models.ProductViewModel
@{
ViewData["Title"] = "CreateIndex";
}
<div class="row">
<div class="col-md-4">
<form asp-action="CreateIndex">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CategoryTypeId" class="control-label">Category Type</label>
<select asp-for="CategoryTypeId" asp-items="ViewBag.CategoryId" class="form-control">
<option value="">Select Category</option>
</select>
</div>
<div class="form-group">
<label asp-for="SubCategoryTypeId" class="control-label">SubCategory Type</label>
<select asp-for="SubCategoryTypeId" class="form-control"></select>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-primary" />
</div>
</form>
</div>
</div>
@section Scripts{
<script>
$(function () {
$("select#CategoryTypeId").change(function () {
var cid = $(this).val();
$("select#SubCategoryTypeId").empty();
$.getJSON(`/Home/GetSubCategory?cid=${cid}`, function (data) {
//console.log(data);
$.each(data, function (i, item) {
$("select#SubCategoryTypeId").append(`<option value="${item.id}">${item.name}</option>`);
});
});
})
});
</script>
}
@model MVCDemo.Models.ProductViewModel
@{
ViewData[“Title”]=“CreateIndex”;
}
类别类型
选择类别
子类别类型
@节脚本{
$(函数(){
$(“选择#CategoryTypeId”).change(函数(){
var cid=$(this.val();
$(“选择#子类别类型ID”).empty();
$.getJSON(`/Home/GetSubCategory?cid=${cid}`,函数(数据){
//控制台日志(数据);
$。每个(数据、功能(i、项){
$(“选择#子类别类型ID”).append(`${item.name}`);
});
});
})
});
}
有很多教程和视频介绍如何一步一步地执行此操作,因此您可以像这样进行操作。您可以在更改父下拉列表值时使用jQuery Ajax调用。下面是一个关于类别和子类别下拉列表的示例-我也尝试过这种方法,但无法通过大量教程和视频了解如何一步一步地完成此操作,因此您可以像这样进行操作。您可以在更改父下拉列表值时使用jQuery Ajax调用。下面是一个关于类别和子类别下拉列表的示例-我也尝试过这种方法,但无法工作如何从数据库中获取数据?您的方法是正确的,但我尝试从我的数据库中获取数据,但它不起作用(使用EF)Hi@DishankPatil,从数据库中获取数据时是否遇到任何错误?根据您的描述,您使用的是EF,而不是EF core,对吗?使用EF core,在从数据库获取数据期间我没有任何错误,但在使用数据库获取数据时,我的子类别无法显示。您的方法是正确的,并且工作正常,但使用database i无法在选择first dropdownFirst后获取第二个下拉数据,您可以在GetSubCategory操作方法中设置断点,并检查是否可以