如何使用 Ajax 从 asp.net Core2.2 中的子模型获取值
How to Get values From Sub Model in asp.net Core2.2 using Ajax
我在我的 Asp.net 核心 2.2 中使用 Ajax,它工作得很好,但我使用的是 Json 值 returns undefined
因为在视图中我使用不同的方式 post 页面中的数据。
当我的视图看起来像这样时,ajax GET
如何获得正确的数据:
<div class="treeview">
@{
if (Model._InstanceDepartment != null && Model._InstanceDepartment.Count() > 0)
{
<ul>
@foreach (var i in Model._InstanceDepartment)
{
<li>
<span class="collapse collapsible" data-loaded="false" pid="@i.DepartId"> </span>
<span>
<a href="#@i.NavUrl" onclick="mydevpartmanifested()">@i.DepatName</a>
</span>
</li>
}
</ul>
}
}
</div>
和Ajax从控制器获取数据喜欢
$.ajax({
url: "/User/SubMenu",
type: "GET",
data: data,
dataType: "json",
success: function (d) {
$(this1).removeClass("loadingP");
if (d.length > 0) {
var $ul = $("<ul></ul>");
$.each(d, function (i, ele) {
$ul.append(
$("<li></li>").append(
"<span class='collapse collapsible' data-loaded='false' pid='" + ele.DepartId + "'> </span>" +
"<span><a href='" + ele.NavUrl + "'>" + ele.DepatName + "</a></span>"
)
)
});
$(this1).parent().append($ul);
$(this1).addClass('collapse');
$(this1).toggleClass('collapse expand');
$(this1).closest('li').children('ul').slideDown();
}
else{...} ../code continue just fine.
问题是我无法从 Model
获得数据生命周期,但是从 Model.__InstanceDepartment
VS2019 DEBUG 显示如下:
控制器看起来像这样:
public JsonResult SubMenu(string pid)
{
System.Threading.Thread.Sleep(1000);
var subcomp = new UserSecurityMains();
int pID = 0;
int.TryParse(pid, out pID);
using (QAEntities context = new QAEntities())
{
subcomp._InstanceDepartment = context.AuthDepartment.Where(x => x.ParentMenuId.Equals(pID)).OrderBy(c => c.DepatName).ToList();
}
return Json(subcomp._InstanceDepartment);
}
What I need is that the data which is found under
_InstanceDepartment
as shown on the picture, must be accessible in
if(d.length > 0)
to display the data. Currently, it's displays none,
undefined
谁有 Fast/Quick 方法来做到这一点??
有几处错误。首先你需要记住 .each 使用索引。此外,用于 json 的默认序列化程序将默认使用驼峰命名法,除非您在 ConfigureServices
.
中更改它
像下面这样的东西应该可以让它工作:
$.ajax({
url: "/User/SubMenu",
type: "GET",
dataType: "json",
success: function (data) {
$(this1).removeClass("loadingP");
//You can view what it returned in the browser console
//console.log(data);
if (data.length > 0) {
var $ul = $("<ul></ul>");
$.each(data, function (index, element) {
$ul.append(
$("<li></li>").append(
"<span class='collapse collapsible' data-loaded='false' pid='" + data[index].departId + "'> </span>" +
"<span><a href='" + data[index].navUrl + "'>" + data[index].depatName + "</a></span>"
)
)
我在我的 Asp.net 核心 2.2 中使用 Ajax,它工作得很好,但我使用的是 Json 值 returns undefined
因为在视图中我使用不同的方式 post 页面中的数据。
当我的视图看起来像这样时,ajax GET
如何获得正确的数据:
<div class="treeview">
@{
if (Model._InstanceDepartment != null && Model._InstanceDepartment.Count() > 0)
{
<ul>
@foreach (var i in Model._InstanceDepartment)
{
<li>
<span class="collapse collapsible" data-loaded="false" pid="@i.DepartId"> </span>
<span>
<a href="#@i.NavUrl" onclick="mydevpartmanifested()">@i.DepatName</a>
</span>
</li>
}
</ul>
}
}
</div>
和Ajax从控制器获取数据喜欢
$.ajax({
url: "/User/SubMenu",
type: "GET",
data: data,
dataType: "json",
success: function (d) {
$(this1).removeClass("loadingP");
if (d.length > 0) {
var $ul = $("<ul></ul>");
$.each(d, function (i, ele) {
$ul.append(
$("<li></li>").append(
"<span class='collapse collapsible' data-loaded='false' pid='" + ele.DepartId + "'> </span>" +
"<span><a href='" + ele.NavUrl + "'>" + ele.DepatName + "</a></span>"
)
)
});
$(this1).parent().append($ul);
$(this1).addClass('collapse');
$(this1).toggleClass('collapse expand');
$(this1).closest('li').children('ul').slideDown();
}
else{...} ../code continue just fine.
问题是我无法从 Model
获得数据生命周期,但是从 Model.__InstanceDepartment
VS2019 DEBUG 显示如下:
控制器看起来像这样:
public JsonResult SubMenu(string pid)
{
System.Threading.Thread.Sleep(1000);
var subcomp = new UserSecurityMains();
int pID = 0;
int.TryParse(pid, out pID);
using (QAEntities context = new QAEntities())
{
subcomp._InstanceDepartment = context.AuthDepartment.Where(x => x.ParentMenuId.Equals(pID)).OrderBy(c => c.DepatName).ToList();
}
return Json(subcomp._InstanceDepartment);
}
What I need is that the data which is found under
_InstanceDepartment
as shown on the picture, must be accessible inif(d.length > 0)
to display the data. Currently, it's displays none,undefined
谁有 Fast/Quick 方法来做到这一点??
有几处错误。首先你需要记住 .each 使用索引。此外,用于 json 的默认序列化程序将默认使用驼峰命名法,除非您在 ConfigureServices
.
像下面这样的东西应该可以让它工作:
$.ajax({
url: "/User/SubMenu",
type: "GET",
dataType: "json",
success: function (data) {
$(this1).removeClass("loadingP");
//You can view what it returned in the browser console
//console.log(data);
if (data.length > 0) {
var $ul = $("<ul></ul>");
$.each(data, function (index, element) {
$ul.append(
$("<li></li>").append(
"<span class='collapse collapsible' data-loaded='false' pid='" + data[index].departId + "'> </span>" +
"<span><a href='" + data[index].navUrl + "'>" + data[index].depatName + "</a></span>"
)
)