2012-12-19 10 views
5

Aufruf habe ich dies in meiner Sicht:eine QTIP in JS für jedes Element in foreach Ausgabe

<%-- 
    The training module list 
    --%> 
    <div id="training-mod-list-<%: categoryName.Replace(' ', '-') %>" class="training-module-list"> 
    <% foreach (var module in categoryGroup) 
    { %> 
    <div class="training-module-row">         
     <div class="training-module-name-<%: module.TrainingModuleId %>">  
      <script type="text/javascript"> 
      <%: Html.GetQTip(module.TrainingModuleId, "", "", QTipPosition.Right,true,""); %> //get error here it has some invalid arguments? 
      </script> 
     <%: module.TrainingModuleName %> 
     </div> 
    </div> 
<% } %> 

, wenn ich über jedes Trainingsmodul Namen schweben i ein QTIP zeigen wollen.

Dann GetQtip:

public static MvcHtmlString GetQTip(this HtmlHelper htmlHelper, string propertyName, string message, string propertyNameOverride = "", QTipPosition position = QTipPosition.Right, bool includeEvents = true, string title = "") 
{ 
    string qtipPosition = String.Empty; 

    switch (position) 
    { 
    case QTipPosition.Right: 
     qtipPosition = "my: 'left center', at: 'right center'"; 
     break; 
    case QTipPosition.Left: 
     qtipPosition = "my: 'right center', at: 'left center'"; 
     break; 
    case QTipPosition.Top: 
     qtipPosition = "my: 'top middle', at: 'bottom middle'"; 
     break; 
    case QTipPosition.Bottom: 
     qtipPosition = "my: 'bottom middle', at: 'top middle'"; 
     break; 
    } 

    if (!String.IsNullOrWhiteSpace(propertyNameOverride)) 
    propertyName = propertyNameOverride; 

    if (String.IsNullOrWhiteSpace(title)) 
    title = htmlHelper.Resource(Resources.Global.Title.Information); 

    StringBuilder sb = new StringBuilder(); 
    sb.Append(String.Concat("$('#", propertyName, "').removeData('qtip').qtip({content: {text:")); 
    sb.Append(String.Concat("'", message, "', title: { text: '", title, "', button: false }}, position: { ", qtipPosition, " }")); 
    if (includeEvents) 
    sb.Append(", show: { event: 'focus mouseenter', solo: true, ready: false }, hide: 'blur'"); 
    sb.Append(", style: { classes: 'ui-tooltip-shadow ui-tooltip-yellow' } });"); 

    return new MvcHtmlString(sb.ToString()); 
    } 
} 

jetzt die Meldung Parameter kann nur sein, eine beliebige Zeichenfolge Kann jemand mir erklären, wie man sich eine qtip für jedes Trainingsmodul-ID zu zeigen, zur Arbeit zu gehen? die Nachrichtenparameter später Punkte spezifisch für jeden Trainingsmodul-ID enthalten in einer HTML-Zeichenfolge

dank

+0

Neue Fragen: Haben Sie ein ":" für Ihr '<%' weggelassen? Sollte es nicht '<%: Html.GetQTip' sein? Vielleicht war es ein Tippfehler oder vielleicht ist es unnötig. Warum verwenden Sie auch die Syntax 'position: QTipPosition.Right'? Warum sollte die "Position:" einbezogen werden? – Ian

+0

Ich habe mein OP wieder bearbeitet :) Ich habe jetzt etwas falsch mit der Parameterliste –

+0

Ist 'module.TrainingModuleId' ein int oder eine Zeichenfolge? Es könnte mehr Bedeutung haben, weil Sie es an eine Funktion übergeben, die bestimmte Typen erwartet. Ich frage mich auch, ob 'QTipPosition.Right' in diesem Kontext verfügbar/gültig ist. Ich würde es nicht wissen. Ersetzen Sie die Funktionsdeklaration, indem Sie eine Zeichenfolge zulassen, und übergeben Sie dann tatsächlich eine Zeichenfolge, um zu sehen, ob das Problem – Ian

Antwort

0

umrechnen TrainingModuleId Parameter von einem int zu einem String für die HTML-Helfer aus.

<%: Html.GetQTip(module.TrainingModuleId.ToString(), "", "", QTipPosition.Right,true,""); %>