我有一个使用 ASP.NET MVC 和 AngularJS 的混合架构。
我使用 ASP.NET MVC 进行路由,所以我没有单页应用程序。
我在我的 ASP 视图中使用这样的 init() 方法将我的 C# ViewModel 注入到角度控制器中:
@model AddictLive.Core.ViewModel.Mobile.ViewModels.MovieViewModel
@using Newtonsoft.Json
<div ng-controller="MovieController" ng-init="init(@Html.Raw(JsonConvert.SerializeObject(Model)))">
...
</div>
为了在我的 Angular 控制器中获取我的 ViewModel,我使用:
$scope.init = function (movieViewModel) {
$scope.property1= movieViewModel.property1;
$scope.property2= movieViewModel.property2;
};
在这种情况下,我遇到了一个 SEO 问题,因为页面内容是由 Angular 动态加载的,即使我的 ViewModel 是加载服务器端。
当 google bot 扫描我的页面时,所有变量总是在这里({{variable}} 或 ng-repeat="movie in movies")。
我在网上找到的所有解决方案都是基于 #! 对于单页应用程序,但我的网站不是单页应用程序。
我找到了这样的 {{variable}} 解决方案:
<span ng-bind="variable">@Model.myVariable</span>
但我对 ng-repeat 和 ng-include 有问题,因为我不能使用剃须刀 @Model。
我已经读过隐藏 div 下的所有内容对于 google seo 来说都不是一个好习惯,所以它也不是一个选项。
有谁知道我的问题的解决方案?
谢谢