【问题标题】:AngularJS without SPA and using ASP.NET MVC routing没有 SPA 并使用 ASP.NET MVC 路由的 AngularJS
【发布时间】:2014-04-19 13:14:42
【问题描述】:

我想将 AngularJS 非 SPA 与 ASP.NET MVC 一起用于我的网站。身份验证通过 Active Directory 进行,因此我发现最好使用 ASP.NET MVC 进行路由和身份验证/授权。

所以我想做的是创建一个包含ng-app 定义的_Layout.cshtml 页面,然后从_Layout.cshtml 派生的每个视图都将包含一个ng-controller 定义。

对于 RESTful 数据处理,我会使用 ASP.NET Web API。

我能想到的唯一问题是 URL 查询字符串参数。如果我想查看特定于ID 的记录,我总是必须将ID 放在ASP.NET MVC 控制器中的ViewBag 中,并在这样的视图中获取它:

<script>
    var roomID = @ViewBag.roomID
</script>

有没有更好的方法来做到这一点?请阐明一些观点。 :)

【问题讨论】:

    标签: asp.net-mvc angularjs


    【解决方案1】:

    更新答案:

    由于你没有使用 Angularjs 路由,你可以使用ngInit。它将在您的控制器范围内初始化一个新变量,您将能够像这样访问它:

    HTML(在您的控制器内):

    <AnyElement ng-init="roomID = @ViewBag.roomID"></AnyElement>
    

    JavaScript:

    var roomID = $scope.roomID;
    

    更多解释见ngInit documentation

    原答案:

    在 Angularjs 中,您可以非常轻松地访问查询字符串参数,例如:

    var paramValue = $routeParams.yourParameterName;
    

    或者如果你想初始化一个 JavaScript 变量,那么考虑使用ngInit。它将在您的控制器范围内初始化一个新变量,您将能够像这样访问它:

    HTML(在您的控制器内):

    <AnyElement ng-init="roomID = @ViewBag.roomID"></AnyElement>
    

    JavaScript:

    var roomID = $scope.roomID;
    

    更多解释见ngInit documentation

    希望对您有所帮助。

    【讨论】:

    • 除非我使用 AngularJS 内置路由系统,否则我无法访问 $routeParams,但我不是。我正在使用 ASP.NET MVC 路由系统,所以我想我必须接受你的第二个建议。 :)
    • 你是对的,我应该更仔细地阅读你的问题。我现在只是在编辑答案:)。如果有帮助,希望您选择它作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2015-07-06
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多