我有一个控制器:
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.IsComplete的第一个实例(在<p>
标记中)会发出正确的值。第二个发出null。任何人都可以告诉我这里发生了什么,以及如何修复它,以便第二个@ ViewBag.IsComplete发出与第一个相同的东西?
答案 0 :(得分:4)
在ng-init绑定中使用@Html.Raw(ViewBag.IsComplete)
。
答案 1 :(得分:2)
使用@Html.Raw
返回未编码的html标记。
<div ng-init="init(isComplete: @Html.Raw(ViewBag.IsComplete))" />
答案 2 :(得分:1)
您需要将bool值转换为字符串,您可以按照其他答案中的建议使用@Html.Raw()
,或只执行@ViewBag.IsComplete.ToString()
。
但是,当您在C#中将bool值转换为字符串时,它将转换为“True”或“False”,但Javascript不会将其识别为bool值。因此,您还必须将其转换为小写。这是你需要做的:
<div ng-init="init(isComplete: @ViewBag.IsComplete.ToString().ToLower())" />