Скажем, у меня есть несколько контроллеров, включая BaseControlelr
и я хочу делать некоторые запросы и отправлять данные в свой Index.cshtml
, но я не Index.cshtml
URL-адрес, поскольку это одностраничное приложение. Обычно я определял маршрут для моего запроса Get
и извлекал его с помощью Angular $http.get
, но есть ли другой способ передать модель непосредственно с моего контроллера на мой взгляд?
но есть ли другой способ передать модель прямо с моего контроллера на мой взгляд?
Конечно, есть. В ASP.NET MVC действие контроллера может вернуть модель представления строго типизированному представлению:
public ActionResult Index()
{
MyViewModel model = ...
return View(model);
}
и в вашем строго типизированном виде вы можете просто сериализовать эту модель представления как Angular constant
доступную вашему угловому приложению:
@model MyViewModel
<script>
angular.module('myApp').constant('model', @Html.Raw(Json.Encode(Model)));
</script>
Теперь в вашем приложении "Угловое" вы можете играть с этой переменной model
:
angular.module('myApp').controller('MainCtrl', ['$scope', 'model', function($scope, model) {
$scope.model = model;
}]);
И в соответствующем шаблоне:
<div ng-controller="MainCtrl">
Hello {{FirstName}} {{LastName}}
</div>
Это, конечно, начальная загрузка вашего SPA. Оттуда вам может понадобиться использовать чистые методы клиентской стороны для работы с моделью.
Index.cshtml
требуется более одной модели?
M
обозначает Model, V
обозначает View, а C
обозначает Controller. Поэтому разговор о том, что разные модели в одном представлении противоречат всей парадигме самой структуры, которую вы используете.
$http
и вы будете использовать эти данные, возвращаемые ajax.