1

J'ai un problème avec MvcSiteMap. Je reçois NullreferenceException lors de l'interférence sur Model.Nodes car Model est NULL.MvcSiteMap - NullreferenceException lors de l'itération sur Model.Nodes. (ASP.NET MVC3 Razor)

Je l'ai eu en travaillant avec @ Html.MvcSiteMap(). Menu() mais quand j'essaye les échantillons de votre DisplayTemplate j'obtiens cette NullreferenceException.

J'ai copié, collé le code du modèle, donc je ne vois pas pourquoi cela ne fonctionne pas. Peut-être que j'ai oublié quelque chose?

Heres mon code:

Mvc.sitemap

<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="false" > 
    <mvcSiteMapNode title="TestProject" action="Index" controller="Home" changeFrequency="Always" updatePriority="Normal"> 
    <mvcSiteMapNode title="Test" action="Index" controller="Home"> 
     <mvcSiteMapNode title="Test1_5" action="Test1_5" controller="Home"> 
     <mvcSiteMapNode title="Test1_4" action="Test1_4" /> 
     <mvcSiteMapNode title="Test1_1" action="Test1_1" /> 
     <mvcSiteMapNode title="Test1_6" action="Test1_6" /> 
     <mvcSiteMapNode title="Test1_2" action="Test1_2"/> 
     <mvcSiteMapNode title="Test1_3" action="Test1_3"/> 
     </mvcSiteMapNode>   
    </mvcSiteMapNode> 
    </mvcSiteMapNode> 
</mvcSiteMap> 

TestSiteMap.cshtml

@model MvcSiteMapProvider.Web.Html.Models.MenuHelperModel 
@using System.Web.Mvc.Html 
@using MvcSiteMapProvider.Web.Html.Models 

@{ 
    ViewBag.Title = "TestSiteMap"; 
} 

<h2>TestSiteMap</h2> 

<ul> 
    @foreach (var node in Model.Nodes) 
    { 
     <li>@Html.DisplayFor(m => node) 
      @if (node.Children.Any()) 
      { 
       @Html.DisplayFor(m => node.Children) 
      } 
     </li> 
    } 
</ul> 

HomeController.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

    namespace MvcApplication3.Controllers 
    { 
     public class HomeController : Controller 
     { 
      public ActionResult Index() 
      { 
       ViewBag.Message = "Welcome to ASP.NET MVC!"; 

       return View(); 
      } 

      public ActionResult TestSiteMap() 
      { 
       return View(); 
      } 

Je ne peux pas comprendre ce que je fais faux!

J'espère que n'importe qui peut aider! Merci!

+0

pouvez-vous poster votre code 'Action'? –

Répondre

0

@ Html.MvcSiteMap(). Menu() crée un modèle, puis utilise le modèle de vue pour afficher les données. À votre avis, le modèle est votre modèle, ce n'est pas un modèle de SiteMap.

Questions connexes