Est-ce que L'url du modèle de routage angulaire prend en charge *.fichiers cshtml dans ASP.Net projet MVC 5?

Je travaille sur un projet MVC 5. Lorsque j'utilise une page html à mes vues, il charge cette page mais quand j'utilise .page cshtml il ne charge pas la vue. La page blanche apparaît.

$urlRouterProvider
    .otherwise('/app/dashboard');

$stateProvider            
    .state('app', {
        abstract: true,
        url: '/app',
        templateUrl: 'tpl/app.html'
    })
    .state('app.dashboard', {
        url: '/dashboard',
        templateUrl: 'tpl/app_dashboard.html'
    })

Se il vous plaît me guider comment utiliser le fichier cshtml ou la meilleure façon de le faire.

23
demandé sur Prasad Akmar 2014-09-11 14:52:42

4 réponses

Oui, vous pouvez.

Ajouter une réponse similaire à Yasser de , mais en utilisant ngRoute:

1) au lieu de référencer votre HTML partiel, vous devez référencer un contrôleur / Action à votre ASP.NET application MVC.

.when('/order', {
    templateUrl: '/Order/Create',
    controller: 'ngOrderController' // Angular Controller
})

2) Votre ASP.NET MVC retournera un .vue cshtml:

public class OrderController : Controller
{
    public ActionResult Create()
    {
        var model = new MyModel();
        model.Test= "xyz";

        return View("MyView", model);
    }
}

3) Votre MyView.cshtml va mélanger Razor et Angular. Attention: comme c'est partiel pour votre application angulaire, définissez la mise en page comme null.

@model MyProject.MyModel

@{
   Layout = null;
}

<h1>{{ Test }}</h1> <!-- Angular -->
<h1>Model.Test</h1> <!-- Razor -->
28
répondu Zanon 2017-05-23 10:31:06

Tu ne peux pas.

Vous ne pouvez pas utiliser le chemin vers A.fichier cshtml dans votre url de modèle de votre route angulaire. Pouvez-vous ouvrir la .fichier cshtml dans votre navigateur ? Pas le droit ? La même chose s'applique ici.

Solution de Contournement :

.le fichier cshtml contient du code côté serveur, pour le rendre, vous devez utiliser un contrôleur et une action. Ils vont rendre cela .fichier cshtml pour vous. Donc, une action de contrôleur renvoie cette vue pour vous et utilise l'url de l'action du contrôleur dans votre angulaire de la route.

Par exemple:

state('app.dashboard', {
        url: '/dashboard',
        templateUrl: '/dashboard/index'
     })

Avec

public class DashboardController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

P. s: ont essayé et cela a fonctionné pour moi

30
répondu Yasser 2014-11-28 06:07:22

Vous ne pouvez pas mélanger les vues angularJs et Razor, razor est chargé dans le serveur et angular s'exécute dans le client il utilise javascript qui s'exécute dans le navigateur pour rendre les vues, c'est pourquoi les gens ont tendance à utiliser une api rest comme backend dans votre cas puisque vous utilisez. net il pourrait s'agir

Ce que vous pouvez faire est d'exécuter la vue razor en tant que "page d'index" principale mais à partir de là, laissez angularjs gérer le routage pour les pages "internes".

Rappelez-vous que angulaire a été construit sur l'idée d'une application seule page {[6] } qui est une perspective différente de asp.net architecture mvc.

1
répondu jack.the.ripper 2014-09-11 13:45:31

Cshtml est essentiellement du code Csharp en ligne avec la syntaxe razor et est rendu en html sur le site du serveur, donc vous ne pouvez pas utiliser dans le routage angulaire car le navigateur n'est pas reconnu c #

0
répondu sylwester 2014-09-11 11:39:11