我想你想用新信息更新屏幕的一部分而不重新加载整个屏幕。
以下 jQuery JavaScript 代码是调用控制器操作并返回一些数据然后将其填充到具有类结果的 DOM 元素中的示例:
$('#CategoryID').on("change", function () {
var categoryId = $('#CategoryID').val();
$.get("/Products/UpdateSubCategories/" + categoryId , function (data) {
console.log("Data: " + data);
$('.result').html(data);
});
})
当 ID 为 CategoryID 的元素发生更改时,此 JavaScript 将触发。
这是控制器动作的示例:
[HttpGet]
public async Task<IActionResult> UpdateSubCategories(int id)
{
if (id==0)
{
NotFound();
}
ViewData["SubCategoryId"] = new SelectList(_context.SubCategories.Where(s => s.CategoryId == id).OrderBy(s => s.SubCategoryName), "Id", "SubCategoryName");
return PartialView();
}
Note 还创建了一个部分视图,用于为选择列表创建所需的 HTML。
@model Namespace.Models.Products
<div class="form-group">
<label asp-for="SubCategoryId" class="control-label"></label><span style="color:red"> *</span>
<select asp-for="SubCategoryId" class="form-control" asp-items="ViewBag.SubCategoryId">
<option value="">-</option>
</select>
<span asp-validation-for="SubCategoryId" class="text-danger"></span>
</div>