jquery - Asp.net 使用 ajax (javascript) 从布局页面中的 api 控制器获取数据
问题描述
在我的 _Layout.cshtml 中,我有一个目前是静态的菜单。由于布局本身不是视图,因此我无法使用 net core 使此菜单动态化。因此,我编写了一个 api 控制器,希望使用 ajax 填充菜单。由于我对使用 Ajax 和 jquery 完全是新手,所以我的尝试失败得很惨。所以这是我的代码:控制器:
[Route("api/[controller]")]
public class DataController : Controller
{
protected ApplicationDbContext dbContext;
public DataController(ApplicationDbContext dc)
{
dbContext = dc;
}
[HttpGet("Categories")]
public List<Category> GetCategories()
{
var l = dbContext.Categories.OrderBy(c => c.Name).ToList();
return l;
}
}
布局页面中菜单的 html 部分,我想更新:
<ul id="menuCategories"class="dropdown-menu">
<li><a href="#">Flowers</a></li>
<li><a href="#">Mountains</a></li>
<li><a href="#">People</a></li>
</ul>
以及布局页面中的脚本部分(使用我的 ajax 尝试):
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="~/lib/js/assets/jquery.min.js"><\/script>')</script>
<script>
$(document.ready(
function () {
$.ajax({
url: "api/Data/Categories",
contentType: "application/json",
method: "GET",
success: function (data) {AddCategoriesTomenu(data)}
})
}
));
var AddCategoriesTomenu = function (categories) {
for (var i = 0; i < categories.length; i++) {
$("menuCategories").append("<li><a href='#'>" + categories[i].Name + "</a></li>");
}
}
</script>
请承受我的无知,我希望我的问题足够清楚。
解决方案
(function () {
$.ajax({
url: "api/Data/Categories",
contentType: "application/json",
method: "GET",
success: function (data) {
var ul="";
$.each(data, function (i, cat) {
ul+= "<li><a href='#'>"+cat.Name+"</a> </li>";
});
$("#menuID").html('');
$("#menuID").html(ul); }
})
}
)();
推荐阅读
- python - 获取 NameError:名称未定义。它与变量的状态有什么关系吗?
- javascript - 决定是否应呈现组件的函数接受用户输入。用户是 GET 请求的结果,因此无法立即使用
- javascript - 数据源无法使用分页映射到转换后的 json
- react-native - React Native Expo CLI:地图视图在独立应用程序上崩溃
- ruby - Rake 因零失败的测试用例而中止
- data-structures - B树可以采用二叉树的形式吗
- docker - docker compose 与容器的通信
- php - 通过查询截断表范围的更快方法?
- slider - 这个滑块不能通过单击下一个和上一个按钮来控制?错误在哪里?
- android - Android 登录 Play 游戏 - 提供“statusCode=SIGN_IN_REQUIRED”