从 Razor 视图中的对象获取值 Javascript/Jquery

Getting values from objects in Razor view to Javascript/Jquery

在我看来,我有以下代码,它加载了一个对象的属性,当我 运行 我的项目时,它显示得很好.. 但是,如何访问 Jquery 中该对象的属性?目前我从 console.logs 得到的是未定义的。

编辑:我尝试将 @Html.Raw(Json.Encode(Model) 添加到我的视图中,现在当我在 html 中点击检查时,我可以看到对象的每个道具,但我仍然无法访问 jquery。

 

function EditTrabajoEnColegio(li) {
    
    console.log(li); //this displays the entire li in the console.
    //From here, I get all as undefined
    console.log(this.TrabajoId); 
    console.log(li.contrato);
    console.log(li.mesIngreso);
    console.log(li.anioIngreso);
    console.log(li.esTitular);
    console.log(li.cargoColegio);
    console.log(li.sueldoBruto);
    
    }
 <li id="li-@Model.TrabajoId" class="list-group-item" 
 onclick="EditTrabajoEnColegio(this)">
       
            @Model.MesIngresoStJohns/@Model.AnioIngresoStJohns
            -
            @(Model.AnioEgresoStJohns != null ? 
     Model.MesEgresoStJohns.ToString() + "/" + 
      Model.AnioEgresoStJohns.ToString() : "Actualidad")
            -
            @Model.SedeNombre
            Model.TipoDocenteId 
            Model.TieneContrato          
            @Model.CargoColegio
            
            @Html.HiddenFor(x => x.TrabajoId)
            @Html.HiddenFor(x => x.SedeId)
            @Html.HiddenFor(x => x.AnioEgresoStJohns)
            @Html.HiddenFor(x => x.AnioIngresoStJohns)
            @Html.HiddenFor(x => x.MesIngresoStJohns)
            @Html.HiddenFor(x => x.MesEgresoStJohns)
            @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)
        
    </li>
   }

我们将不胜感激任何帮助。

您需要使用 javascript 或 jquery 函数,例如 find()

console.log(li.find("#TrabajoID").val());

或类似的东西:

$(li).find("ul").each(function( index ) {
    console.log(($(this).text());
 });

对于未来的读者,我能够解决它。

我所做的是,

JSON.parse('@Html.Raw(Json.Encode(型号))');

这让我可以传递定义的对象

并在 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)"

这里this指的是你用razor创建的li对象。因此在函数 EditTrabajoEnColegio li 对象中将存储您传递给 onclick 事件的 li 元素。因此,即使您从 console.log(li) 获得结果(它将打印整个 li 对象),它也不会显示 console.log(this.TrabajoId) 的任何值('TrabajoId' 不是 属性 li 对象,它是模型中的一个属性)。

也可以通过

访问模型数据
var data = JSON.parse('@Html.Raw(Json.Encode(Model))');

您现在可以使用带有 data 变量的模型中的所有值,就像您使用普通的 Json 对象一样..