2012-05-06 7 views
5

Come mai il seguente codice funziona bene ...Come posso includere ul tag all'interno di un blocco di codice del rasoio?

 <ul class="searchList"> 
      @if (Model.Count() > 0) 
      { 
       foreach (var partner in Model) 
       { 
        <li> 
         @Html.ActionLink(@partner.Name, "Details", "Partner", new { id = partner.AID }, null)<br /> 
         @partner.Street<br /> 
         @partner.CityStateZip<br /> 
         @if(!string.IsNullOrEmpty(partner.Phone)) 
          { 
           @partner.Phone<br /> 
          } 
         @(partner.Distance) miles<br /> 
        </li> 
       } 
      } 
     </ul> 

Ma questo codice non funziona bene ...

  @if (Model.Count() > 0) 
      { 
       <ul class="searchList"> 

         foreach (var partner in Model) 
         { 
          <li> 
           @Html.ActionLink(@partner.Name, "Details", "Partner", new { id = partner.AID }, null)<br /> 
           @partner.Street<br /> 
           @partner.CityStateZip<br /> 
           @if(!string.IsNullOrEmpty(partner.Phone)) 
            { 
             @partner.Phone<br /> 
            } 
           @(partner.Distance) miles<br /> 
          </li> 
         } 

       </ul> 
      } 

Il secondo errore si restituisce il seguente errore ...

Messaggio di errore del compilatore: CS0103: il nome "partner" non esiste nel contesto corrente.

Sto trovando il codice che mescola le regole del rasoio per essere difficile da seguire. Sarà apprezzato qualsiasi collegamento che dia la spiegazione canonica.

Seth

risposta

10

È necessario premettere il foreach con @: Razor

@foreach (var partner in Model) 

Il <ul> sta definendo nuovamente a markup-mode quindi è necessario aggiungere il @ per dirgli di tornare indietro in un blocco di codice.

+1

Grazie per non solo dirmi come ma anche la spiegazione di ciò che stavo facendo male. –

3

Nel secondo esempio, è necessario @foreach di transizione da markup al codice.

Nel primo esempio non lo si fa, poiché il contenuto diretto di un blocco if è già codice.

2

si dovrebbe seguire this come riferimento, non affronterete mai più tali problemi. :)

+0

Grazie per il link. Proprio quello di cui avevo bisogno. –

Problemi correlati