MVC 6项目中如何通过JQuery从Session获取模型的指定字段
MVC 6项目中如何通过JQuery从Session获取模型的指定字段
嗨,我来帮你搞定这个问题!你现在拿到的是字符串,是因为存在Session里的SearchData是序列化后的JSON字符串,得先把它转成JavaScript对象,才能访问里面的具体字段,步骤很简单:
第一步:确保后端存储的是序列化后的JSON
首先得确认你在后端把SearchModel对象存进Session时,是先序列化成JSON字符串的(如果还没这么做的话),示例代码如下:
// 假设你已经实例化了SearchModel并赋值 var searchModel = new SearchModel { SSN = "123-45-6789", EmployeeNumber = "EMP001", LastName = "Doe", FirstName = "John" }; // 序列化为JSON字符串 var jsonData = System.Text.Json.JsonSerializer.Serialize(searchModel); // 存入Session HttpContext.Session.SetString("SearchData", jsonData);
第二步:前端解析JSON字符串为JS对象
你之前的代码直接拿的是字符串,现在需要用JSON.parse()把它转成JS对象,另外要注意用@Html.Raw()避免JSON里的引号被HTML编码,否则解析会失败。修改后的前端代码:
$(document).ready(function () { // 用Html.Raw输出原始JSON字符串,避免编码问题 var searchDataJson = '@Html.Raw(HttpContextAccessor?.HttpContext?.Session?.GetString("SearchData"))'; // 解析成JS对象,同时处理Session为空的情况 var searchData = searchDataJson ? JSON.parse(searchDataJson) : {}; // 现在就能直接访问指定字段啦! console.log("SSN:", searchData.SSN); console.log("员工编号:", searchData.EmployeeNumber); console.log("姓氏:", searchData.LastName); // 对了,你问题里提到的EmployerName在你的模型里不存在哦,应该是EmployeeNumber吧😉 });
小提示
- 如果Session里的
SearchData可能为空,一定要加个判断,不然JSON.parse()会报错,上面的代码已经用三元表达式处理了这种情况。 - 用
@Html.Raw()很关键,不然JSON里的双引号会被转成",导致解析失败。
备注:内容来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

