无法将ViewBag数据传递给AngularJS

时间:2015-11-02 14:45:54

标签: 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";
}

<p>@ViewBag.IsComplete</p>

<div ng-init="init(isComplete: @ViewBag.IsComplete)" />

ViewBag.IsComplete的第一个实例(在<p>标记中)会发出正确的值。第二个发出null。任何人都可以告诉我这里发生了什么,以及如何修复它,以便第二个@ ViewBag.IsComplete发出与第一个相同的东西?

3 个答案:

答案 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())" />