3

Isn't it possible to pass @Model to ng-init in ASP.NET MVC 4 view? When I do it like data-ng-init=init(@Model) it is undefined in the init() function.

$scope.init = fuynction(model){
    console.log(model); // prints undefined
}

By the way I'm new to AngularJs. Any help is appreciated in advance.

Alexandre Nucera
  • 2,183
  • 2
  • 21
  • 34
Beginner
  • 1,010
  • 4
  • 20
  • 42
  • 2
    Remember, Angular is running on the browser and only knows about client-side JavaScript. To use the model, you would need to serialize `@Model` into something that JavaScript can understand. – Davin Tryon Feb 26 '14 at 10:59

3 Answers3

17

As I commented, you need to translate between your server-side objects (e.g. @Model) and client-side objects.

For example, if you just wanted to use the Name property of @Model you could do something like this:

<div ng-init="init('@Model.Name')"></div>

$scope.init = function(name){
    console.log(name); // prints value of name
}

Notice, that even in this simple example, it is necessary to format @Model.Name into a JavaScript string (by putting quotes around it).

Probably, you don't want to use the entire @Model object. It is best to choose only the fields you want and pass them in individually.

If you need access to a lot of data from the server, it is recommended to use $http service and make a server call for the data.

Davin Tryon
  • 66,517
  • 15
  • 143
  • 132
5

Serialize you model into json string, using Newtonsoft.Json assembly or similar and pass the serialization result to data-ng-init.

lavrik
  • 1,456
  • 14
  • 25
3

inlcude the @using ProjectApp.Models then data-ng- init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model))"

lant
  • 41
  • 2