2015-11-08 1 views
3

J'ai utilisé ng-include comme indiqué ci-dessous.Mais ça ne fonctionne pas.Pouvez-vous me dire pourquoi? Merci d'avance.Angulaire ng-include ne fonctionne pas avec le rasoir page

createOrEditPropertyModal.cshtml

<div ng-include="'propertymanagement/tabs/createPropertyForm.html'"></div> 

J'ai essayé de cette façon also.But même erreur 404.

<div ng-include="'tabs/createPropertyForm.html'"></div> 

createPropertyForm.cshtml

<script type="text/ng-template" id="createPropertyForm.html"> 
    <form name="createPropertyForm" role="form"> 

     //removed for clarity 

    </form> 
</script> 

soloution Arbre

enter image description here

Note: Quand je le mets sur la même page alors ça marche.Mais comment puis-je faire cela au-dessus? B'cos je voudrais mettre ce code sur un fichier séparé .cshtml.

<div ng-include="'createPropertyForm.html'"></div> //on same page where this works well 

Répondre

10

Méthode 1: Vous pouvez le faire this.Here est le way.You OP Réponse

doivent donner le chemin complet comme illustré ci-dessous.

<div ng-include="'~/App/tenant/views/propertymanagement/tabs/createPropertyForm.cshtml'"></div> 

Si vous avez des problèmes de performance vérifier ensuite ici: ng-Include is very slow with the external template

Méthode 2:

vous ne pouvez pas inclure .cshtml page à l'aide ng-inclure

pour elle vous devez aller avec le bon acheminement de mvc, comme

<div ng-include="'controller/Template/createPropertyForm'"></div> 

ici createPropertyForm sera comme une partie d'identification d'une méthode d'action

public ActionResult Template(string id) 
    { 
    switch (id.ToLower()) 
    { 
     case "createPropertyForm": 
      return PartialView("~/Views/propertymanagement/tabs/createPropertyForm.cshtml"); 

     default: 
      throw new Exception("template not known"); 
    } 
} 

sinon il suffit de créer une page html et l'accès comme

<div ng-include="'createPropertyForm.html'"></div> 
+0

Pourriez-vous me dire pourquoi cela se comporte différemment * .cshtml pages et pages * .html? Merci. – Sampath

+1

@Sampath par [Anguler Docs] (https://docs.angularjs.org/api/ng/directive/ngInclude), ng-include Récupère, compile et inclut un fragment HTML externe. Et cshtml est html + code du serveur. donc d'abord par cycle mvc il obtiendra pur html puis peut l'inclure. selon ma compréhension. – Viplock

+1

@Sampath 'return View()' ou 'return PartialView()' indique à MVC de générer le code HTML approprié et de le renvoyer, ce qui peut être utilisé par 'ng-include' pour l'ajouter sur la page. J'espère que cela vous aidera. - merci – Viplock