在我看来,我有一个带有ng-bind属性的标签,该标签显示了正确的布尔值:

<span id="ShowFlag" name="ShowFlag" ng-bind="session.view.showFlag"></span>


将表单发布到服务器端后,我希望将此表单绑定到相关模型上的属性。

public bool ShowFlag { get; set; }


但是,这始终返回false,而Span标记中显示的值在页面上正确显示为true。有什么明显的我想念的地方吗?

最佳答案

我认为您缺少AngularJs绑定的工作原理。如果要将服务器中的值转换为角度模型,可以使用Razor将数据转换为JavaScript(最好的位置是Angular控制器中)。

这是我整理的快速样本。

这是来自MVC控制器的代码。在此示例中,我们使用模型数据和ViewBag数据。

public ActionResult Index()
{
    dynamic model = new ExpandoObject();
    model.ShowFlag = "True";

    ViewBag.ShowFlag = "ViewBag True";
    return View(model);
}


这是视图的外观,包括引用,Angular,JQuery以及AngularJs应用程序和控制器的代码:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Demo</title>
</head>
<body>
    <div>
        <h2>Sample For Stack Overflow</h2>

        <div ng-app="glennapp">
            <div ng-controller="testController">
                <input type="text" ng-model="showFlag" />
                <input type="text" ng-model="showFlag2" />

                <div>
                    <span ng-bind="showFlag" ></span>
                    <span ng-bind="showFlag2" ></span>
                </div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="//code.angularjs.org/1.4.8/angular.min.js"></script>
    <script type="text/javascript">
        var mainApp = angular.module('glennapp', ['glennControllers']);
        var glennControllers = angular.module('glennControllers', []);
        glennControllers.controller('testController', ['$scope', function ($scope) {

            $scope.showFlag = '@ViewBag.ShowFlag';
            $scope.showFlag2 = '@Model.ShowFlag';
        }]);
    </script>
</body>
</html>


另一个选择是创建一个MVC操作,该操作返回JsonResult,然后编写一些JavaScript进行Ajax调用并检索数据。

关于c# - 如何通过Angular ng-bind属性使用MVC模型绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34069330/

10-12 12:37
查看更多