从Razor视图中的对象获取值到Javascript/Jquery
在我看来,我有下面的代码,它是从一个对象加载属性的,当我运行我的项目时,它显示得很好。。 但是,如何在Jquery中访问该对象的属性?目前,我从console.logs获取的内容尚未定义 编辑:我尝试将@Html.Raw(Json.Encode(Model))添加到我的视图中,现在当我在Html中点击inspect时,我可以看到对象的每个道具,但我仍然无法在jquery中访问它们从Razor视图中的对象获取值到Javascript/Jquery,jquery,.net,asp.net-mvc-4,razor,Jquery,.net,Asp.net Mvc 4,Razor,在我看来,我有下面的代码,它是从一个对象加载属性的,当我运行我的项目时,它显示得很好。。 但是,如何在Jquery中访问该对象的属性?目前,我从console.logs获取的内容尚未定义 编辑:我尝试将@Html.Raw(Json.Encode(Model))添加到我的视图中,现在当我在Html中点击inspect时,我可以看到对象的每个道具,但我仍然无法在jquery中访问它们 功能编辑Trabajoencologio(li){ console.log(li);//这将在控制台中显示整个l
功能编辑Trabajoencologio(li){
console.log(li);//这将在控制台中显示整个li。
//从这里,我得到的都是未定义的
console.log(this.TrabajoId);
控制台日志(li.contrato);
控制台日志(li.mesingero);
console.log(li.anioIngreso);
控制台日志(li.esTitular);
控制台日志(li.cargoColegio);
console.log(li.sueldoBruto);
}
@Model.mesingrostjohns//@Model.anioingrestjohns
-
@(Model.anioegrestojohns!=null?
Model.mesegrestostjohns.ToString()+“/”+
Model.anioegrestostjohns.ToString():“Actualidad”)
-
@模型:SedeNombre
Model.TipoDocenteId
型号:TieneContrato
@卡哥特科莱吉奥模型酒店
@Html.HiddenFor(x=>x.TrabajoId)
@Html.HiddenFor(x=>x.SedeId)
@HiddenFor(x=>x.anioegrestjohns)
@Html.HiddenFor(x=>x.anioingrestojohns)
@Html.HiddenFor(x=>x.mesingrostjohns)
@Html.HiddenFor(x=>x.mesegrestostjohns)
@Html.HiddenFor(x=>x.FechaIngreso)
@Html.HiddenFor(x=>x.FechaEgreso)
@Html.HiddenFor(x=>x.SedeNombre)
@Html.HiddenFor(x=>x.CargoColegio)
@Html.HiddenFor(x=>x.TipoDocenteId)
@Html.HiddenFor(x=>x.EsTitular)
@Html.HiddenFor(x=>x.TieneContrato)
@Html.HiddenFor(x=>x.SueldoBruto)
}
您需要使用javascript或jquery函数,如find()
或者类似于:
$(li).find("ul").each(function( index ) {
console.log(($(this).text());
});
您需要使用javascript或jquery函数,如find() 或者类似于:
$(li).find("ul").each(function( index ) {
console.log(($(this).text());
});
对未来的读者来说,我能够解决这个问题 我所做的是 parse('@Html.Raw(JSON.Encode(Model))); 这允许我传递已定义的对象 在jquery中
function EditTrabajoEnColegio(li) {
$("#CargoColegio").val(li.CargoColegio);
$("#SueldoBruto").val(li.SueldoBruto);
$("#AnioIngresoStJohns").val(li.AnioIngresoStJohns);
$("#MesIngresoStJohns").val(li.MesIngresoStJohns);
}
请注意,参数的名称在jquery中并不重要,它只是从视图中获取的内容。对于未来的读者,我能够解决它 我所做的是 parse('@Html.Raw(JSON.Encode(Model))); 这允许我传递已定义的对象 在jquery中
function EditTrabajoEnColegio(li) {
$("#CargoColegio").val(li.CargoColegio);
$("#SueldoBruto").val(li.SueldoBruto);
$("#AnioIngresoStJohns").val(li.AnioIngresoStJohns);
$("#MesIngresoStJohns").val(li.MesIngresoStJohns);
}
请注意,参数的名称在jquery中并不重要,它只是您从视图中获得的内容。您的要求在问题中不是很清楚,但是您在javascript中所做的是错误的
onclick="EditTrabajoEnColegio(this)"
这里这个指的是你用razor创建的li
对象。因此,在函数edittrabajoencologio
中,li
对象将存储你传递的li
元素onclick
事件。因此,即使你从控制台.log(li)
得到一个结果(它将打印整个li对象),它不会向console.log(this.TrabajoId)
(TrabajoId不是li对象的属性,它是模型中的属性)
也可以通过以下方式访问模型数据:
var data = JSON.parse('@Html.Raw(Json.Encode(Model))');
您现在可以使用数据变量处理模型中的所有值,就像使用普通Json对象一样。您的要求在问题中不是很清楚,但是您在javascript中所做的是错误的
onclick="EditTrabajoEnColegio(this)"
这里这个指的是你用razor创建的li
对象。因此,在函数edittrabajoencologio
中,li
对象将存储你传递的li
元素onclick
事件。因此,即使你从控制台.log(li)
得到一个结果(它将打印整个li对象),它不会向console.log(this.TrabajoId)
(TrabajoId不是li对象的属性,它是模型中的属性)
也可以通过以下方式访问模型数据:
var data = JSON.parse('@Html.Raw(Json.Encode(Model))');
现在,您可以使用数据变量来处理模型中的所有值,就像使用普通Json对象一样。我得到了未捕获的类型错误:li.find不是htmlilement.onclick(119d6359-540b-4327-97af-7939b6a70a3f:536)上的edittrabajoencologio(PersonaEdit.js:331)的函数。哦,用$(li)替换li.find(#contracto)。find(“#contato”)我在每种情况下都没有定义。例如,我刚刚尝试了console.log($(li).find(“#SedeNombre”).val());但是没有定义等等,你甚至在使用jquery吗?如果没有,你可能想使用findElementByID()。是的,我在使用jquery。我得到了未捕获的类型错误:li.find不是EditTrabajoencoligo的函数(PersonaEdit.js:331)在htmlilement.onclick(119d6359-540b-4327-97af-7939b6a70a3f:536)哦,用$(li)替换li.find(“#contracto”)。find(#contracto“)我在每种情况下都没有定义。例如,我刚刚尝试了console.log($(li)。find(#SedeNombre”).val();但是没有定义等等,你甚至在使用jquery吗?如果没有,你可能想使用findElementByID()。是的,我在使用jquery。我昨天也得出了类似的结论(见我自己的答案),但我使用了var data=@Html.Raw(Json.Encode(Model));而不是JSON.parse..可以吗,或者我也需要使用JSON parse?根据w3schools的说法,jsonparse是最佳做法。感谢您提供的信息。JSON.Encode()
将对象转换为JSON格式的字符串,Html.Raw()
将返回未编码的字符串。使用JSON.parse