【问题标题】:Iterate Session variable in Jquery在 Jquery 中迭代 Session 变量
【发布时间】:2017-09-16 09:27:09
【问题描述】:

我有一个 .net MVC 项目。我将List 分配给会话变量。在视图中,我使用 jquery 来迭代会话变量中的数据。

即,

var doctors = @Html.Raw(Json.Encode(HttpContext.Current.Session["DoctorList"]));

doctorCount = doctors.length; 

for(i=0;i<doctorCount ; i++) 
{
     var totalinvoice =0; 
     rows = "<tr><td style='text-align:center'>"+ (parseInt(i, 10)+1) +"</td><td colspan='6'><b>" + doctors[i].D_Name + "</b></td></tr>" 
     $(rows).appendTo("#tbl_doctorwise tbody"); 
}

即使会话变量包含列表值,此代码有时也会给出 null。但有时它会起作用。

还有其他方法可以在 mvc 视图 (jquery) 中循环会话变量吗?

我如何在 jquery 中获取会话值??? (会话变量包含列表)

【问题讨论】:

  • 软件不喜怒无常。它要么起作用,要么不起作用。上面的代码对我来说看起来不错。你能分享你提到的循环部分吗?那里可能有问题。
  • var医生计数=医生长度; for(i=0;i" + 医生[ i].D_Name + "" $(rows).appendTo("#tbl_doctorwise tbody"); }
  • 你真的需要 jquery 吗?为什么不循环遍历Session["DoctorList"] 并填充创建 的tr?分享您的控制器操作方法,该方法返回此View。此外,您应该为此使用ViewModelViewBag
  • 实际上数据不是在运行时而不是在页面加载中出现。我需要将两个列表传递给视图。我通过的一个列表抛出了 ajax,另一个我使用会话传递。
  • ajax 调用从何而来?您需要共享所有相关代码以使其成为 Minimal, Complete, and Verifiable example

标签: c# jquery asp.net-mvc session-variables


【解决方案1】:

如果您正在进行 ajax 调用并在您的操作方法中设置此会话项,则它在您的原始视图中不可用,因为当您请求该视图的操作方法时,该视图代码已经执行。

您应该做的是,而不是在会话中设置此数据,而是从您的操作方法中将其作为 json 返回。

[HttpPost]
public ActionResult GetDoctorwiseReport(DateTime fromDate,DateTime toDate)
{
  var doctorList = new List<Doctor>();
  //populate this list now
  return Json(doctorList);
}

现在在您的 ajax 调用的成功处理程序中将接收此数据,您可以循环访问它们。

 success: function(data) {
     $.each(data,function(ind,item)
     {
        //build your html here as needed.
        console.log(item);
     });
 }

【讨论】:

  • 我使用 ,
  • 我需要传递两个不同的列表,所以我使用会话作为一个列表。
  • 第一次没有数据。但是如果我重新加载页面,我的数据就会显示出来
【解决方案2】:
<script> 
$(function () 
{ 
    var doctors= @Html.Raw(Json.Encode(HttpContext.Current.Session["DoctorLis‌​t"])) 
    $.each(doctors, function (index, value) 
    { 
        var totalinvoice =0; rows = "<tr><td style='text-align:center'>"+ (parseInt(i, 10)+1) +"</td><td colspan='6'><b>" + value.D_Name + "</b></td></tr>" 
        $(rows).appendTo("#tbl_doctorwise tbody"); 
    }) 
}); 
</script> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2013-06-25
    • 2015-12-01
    • 2010-11-17
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多