【发布时间】:2021-05-26 01:35:46
【问题描述】:
我有一组 KPI 数据需要从我的 ASP.NET 项目传递到 Javascript 文件。我想我可以使用 ViewBag 来做到这一点......这是控制器中的内容:
public ActionResult KPI()
{
if (Session["OrganizationID"] == null)
{
return RedirectToAction("Unauthorized", "Home");
}
else
{
int orgId;
int.TryParse(Session["OrganizationID"].ToString(), out orgId);
var user = db.Users.Find(User.Identity.GetUserId());
var organization = user.Organizations.Where(o => o.OrganizationID == orgId).FirstOrDefault();
var reports = db.Reports.ToList();
try
{
var org_reports = (from r in reports
where r.OrganizationID == organization.OrganizationID
select r).ToList();
var kpi = new KPI(org_reports);
var jsonKPI = JsonConvert.SerializeObject(kpi);
ViewBag.orgData = jsonKPI;
}
catch (ArgumentNullException e)
{
return RedirectToAction("Unauthorized", "Home");
}
}
return View();
}
从视图中我尝试使用隐藏值,并且在调用脚本时也只是将它们作为参数传递:
<input type="hidden" id="orgData" value=@ViewBag.orgData>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="~/Scripts/KPIs.js">
orgData = @ViewBag.orgData;
</script>
然后我想在我的 JS 脚本中读取这个值并将其从字符串解析为 JSON:
function myFunction(){
var test1 = JSON.parse(document.getElementById('orgData'); // Doesn't work
var test2 = JSON.parse(orgData); // Doesn't work
}
这些方法似乎都不起作用。我的错误是什么?
【问题讨论】:
标签: javascript c# html asp.net asp.net-mvc