Can';t将ViewBag数据传递给AngularJS
我有一个控制器:Can';t将ViewBag数据传递给AngularJS,angularjs,asp.net-mvc,Angularjs,Asp.net Mvc,我有一个控制器: public ActionResult Edit(int id) { ViewBag.IsComplete = false; return View(dbContext.Users.Where(user => user.Id == id)) } 以及相应的观点: @model User @{ ViewBag.Title = "Edit User"; Layout = "~/Views/Shared/_PopupLayout.cshtml
public ActionResult Edit(int id) {
ViewBag.IsComplete = false;
return View(dbContext.Users.Where(user => user.Id == id))
}
以及相应的观点:
@model User
@{
ViewBag.Title = "Edit User";
Layout = "~/Views/Shared/_PopupLayout.cshtml";
}
<p>@ViewBag.IsComplete</p>
<div ng-init="init(isComplete: @ViewBag.IsComplete)" />
@模型用户
@{
ViewBag.Title=“编辑用户”;
Layout=“~/Views/Shared/\u PopupLayout.cshtml”;
}
@ViewBag.IsComplete
ViewBag.IsComplete的第一个实例(在
标记中)发出正确的值。第二个发射空。有谁能告诉我这里发生了什么,以及如何修复它,以便第二个@ViewBag.IsComplete与第一个发出相同的信息吗?使用@Html.Raw
返回未编码的Html标记
<div ng-init="init(isComplete: @Html.Raw(ViewBag.IsComplete))" />
在ng init绑定中使用
@Html.Raw(ViewBag.IsComplete)
。您需要将bool值转换为字符串,您可以按照其他答案中的建议使用@Html.Raw()
,或者只需执行@ViewBag.IsComplete.ToString()
但是,当您在C#中将bool值转换为字符串时,它将被转换为“True”或“False”,但Javascript不会将它们识别为bool值。因此,您还必须将其转换为小写。以下是您需要做的:
<div ng-init="init(isComplete: @ViewBag.IsComplete.ToString().ToLower())" />
试试@Html.Raw(ViewBag.IsComplete)
效果很好。请将此作为答复提交,我将接受。谢谢。事实上,在我实施丹迪的答案后,我几乎立刻发现了这一点。我的解决方案是将IsComplete设置为“true”或“false”,然后使用@HTml.Raw将其写出。它只用于初始化angularjs控制器,所以我不在乎它是否是“真正的”布尔值。