2016-05-15 7 views
0

abgefragt Was ich versuche zu erreichen ist sehr einfach. Ich möchte den Namen eines Zeitplans anzeigen, wenn die zugehörige Instanz-ID mit der Instanz-ID übereinstimmt, die in der Tabelle auf meiner Webseite angezeigt wird. Hier ist der Code für die TabelleString nicht korrekt zeigt, wenn aus einer Datenbank

<table id="table1" class="table table-bordred table-striped"> 
<thead> 
    <tr> 
     <th>Instance Name</th> 
     <th>Instance ID</th> 
     <th>Launch Time</th> 
     <th>Instance Type</th> 
     <th>State</th> 
     <th>Public Ip</th> 
     <th>Zone</th> 
     <th>Schedule</th> 
    </tr> 
</thead> 
@{int totalcount = Model.instances.Reservations.Count;} 
<tbody> 
    @for (var i=0; i <= totalcount - 1; i++) 
    { 
     foreach (var instances in Model.instances.Reservations[i].Instances) 
     { 
     <tr> 
      @* if an instance gets terminated and has no name it will show up as blank and stop the describe call from breaking *@ 
      @if (instances.Tags.Count > 0) 
      { 
      <td> 
       @instances.Tags[0].Value 
      </td> 
      } 
      else 
      { 
       <td>No Name</td> 
      } 
      <td>@instances.InstanceId</td> 
      <td>@instances.LaunchTime</td> 
      <td>@instances.InstanceType</td> 
      <td>@instances.State.Name</td>f 
      <td>@instances.PublicIpAddress</td> 
      <td>@instances.Placement.AvailabilityZone</td> 
      @foreach (var row in db.Query(selectQueryString)) 
      { 
       if(instances.InstanceId == row.ServerId) 
       { 
        <td>row.ScheduleName</td> 
       } 
       else 
       { 
        <td>Unscheduled</td> 
       } 
      } 
     </tr> 
     } 
    } 
</tbody> 

der Query-String oben wie so deklariert wird.

@{ 
var db = Database.Open("DefaultConnection"); 
var selectQueryString = "SELECT * FROM ScheduledServer ORDER BY Id"; 
} 

Beim Ausführen der Abfrage in SSMS ich folgendes Ergebnis enter image description here

Aber wenn ich einen Blick auf den Wert von row.ServerId anstelle der Zeichenfolge i-a137e32b wobei seine als \ ti-a137e32b angezeigt, so Es überspringt die if-Bedingung und zeigt den Namen des Zeitplans nicht an. Ich bin nicht sehr versiert in Razor oder SQL, also habe ich keine Ahnung, warum das \ t an den Anfang meiner Zeichenfolge angehängt wird.

+0

Ich vermute, dass Sie das '\ t' als Folge des Kopierens aus dem Ergebnisfenster mit der Abfrage sind zu sehen. Wenn Sie versuchen, 'SELECT Id, '*' + ServerId + '*', ScheduleName FROM ScheduledServer ORDER BY Id 'zu wählen, sehen Sie immer noch die Registerkarte unmittelbar vor der eigentlichen' ServerId '? – user212514

+0

Das Format Ihrer Abfrage hat einen Fehler verursacht "Zusätzliche Information: Ungültiger Spaltenname 'ServerId'" Ich verwende MSSQL, wenn das einen Unterschied macht. – Pudding

+0

Wenn 'ServerId' eine ungültige Spalte ist, was hat dann SQL in dem Screenshot gezeigt? – user212514

Antwort

1

Der/t wurde zu Beginn der Zeichenfolge angehängt wird, weil es in der Folge war. MSSQL zeigt/t als einzelnes Whitespace-Zeichen im Ergebnisfenster von ssms an. Daher habe ich so lange darüber nachgedacht, bis ich weitere Dateneinträge eingereicht habe. Wenn Sie das Bild in der Frage betrachten, können Sie leicht sehen, dass es nach rechts geschoben wird.

Verwandte Themen